htaccess将root整合到url并隐藏index.php

时间:2014-11-06 21:22:01

标签: php apache .htaccess mod-rewrite redirect

我有两个htaccess重写(我从别处剔除),它们独立地为我的网站做X或Y。我无法弄清楚的是如何编写它以便BOTH功能正常工作。

重定向所有缺少“www”的请求:

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

重定向包含“index.php”的所有请求:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

此外,前一个功能可以将example.com重写为www.example.com。但是,我在此根目录的子目录中有另一个站点,它有自己的“独立”URL。但该功能还会将该网址从www.anotherexample.com重写为www.example.com/anotherexample。

如何在不重写我的子目录网站网址的情况下将这些合并到一个可行的功能中?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将这些组合规则保存在root .htaccess中:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=301,NC,NE]