Apache Mod_Rewrite [英] Apache Mod_Rewrite

查看:37
本文介绍了Apache Mod_Rewrite的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力编写一个 .htaccess 文件来基本上映射以下域:

I'm struggling writing a .htaccess file to basically map the following domains:

  • dev.domain.com/$1 =>index.php/dev/$1
  • api.domain.com/$1 =>index.php/api/$1
  • domain.com/$1 =>index.php/front/$1
  • www.domain.com/$1 =>index.php/front/$1

目前,一切都通过以下配置映射到 index.php/$1:

At the moment, everything is mapping to index.php/$1 with the following configuration:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

这是我默认使用的 php 框架附带的内容.任何帮助将不胜感激:-) 谢谢!

This is what came with the php framework I'm using by default. Any help would be greatly appreciated :-) Thanks!

推荐答案

如果你想根据域名映射请求的路径,那么你可以使用额外的RewriteCond并匹配HTTP_HOST 首先.

If you want to map the requested paths based on the domain name, then you can use an additional RewriteCond and match the HTTP_HOST first.

您必须将现有的 RewriteConds 块和每个域的 RewriteRule 相乘 - 除了最后一对可能只是默认值:

You will have to multiply your block of existing RewriteConds and the RewriteRule for each domain - except for the last pair which could just be a default:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^dev\.domain\.com
RewriteRule ^(.*)$ index.php/dev/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^api\.domain\.com
RewriteRule ^(.*)$ index.php/api/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/front/$1 [L]

未测试.但另请参阅有关 serverfault 的文章 关于 Mod_Rewrite 规则你想知道但又不敢问的一切?,它解释了条件和重写规则之间的相互作用.

Not tested. But see also the article on serverfault Everything You Ever Wanted to Know about Mod_Rewrite Rules but Were Afraid to Ask?, which explains the interactions between conditions and rewrite rules.

这篇关于Apache Mod_Rewrite的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆