htaccess多个域,强制特定域及其到www的路径并排除路径但重定向排除的路径

时间:2017-11-01 13:31:53

标签: php apache .htaccess redirect mod-rewrite

如何强制将特定域名及其所有路径强制到www(特定路径除外),而是将该特定路径重定向到另一个域。所以我想要的是强迫 en.one以及www.en.one以外的所有路径en.one/admin。但最重要的是,我希望被排除的en.one/admin转到另一个域http://www.en.me

到目前为止,我已设法排除en.one/admin,但我仍未能将en.one/admin重定向到http://www.en.me。 我的代码

RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.one$
RewriteCond %{THE_REQUEST} !/admin //This excludes the /admin
RewriteRule (.*) http://www.en.one/$1 [R=301,L]

注意:这是一个多站点,多个域由此单个.htaccess文件管理,因此解决方案对于特定域名非常重要。

2 个答案:

答案 0 :(得分:0)

也许你可以尝试连接几个条件

## Not www include
RewriteCond %{HTTP_HOST} !^www\.(.+) [NC]
## Not admin directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/admin/ [NC]
## then rewrite to www.
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
## And then redirect your admin
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/admin/(.+) [NC]
RewriteRule ^(.*) http://www.en.me/$1 [R=301,L]

答案 1 :(得分:0)

感谢@Christophe帮助我找到解决方案。您可以在Christophe的答案中查看我们的对话作为评论。解决方案是再次重复HTTP_HOST条件。所以最后我的.htaccess看起来像这样。

RewriteEngine on
RewriteCond %{HTTP_host} ^en.one$     
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/admin     
RewriteRule ^(.*) http://www.en.one/$1 [R=301,L]
RewriteCond %{HTTP_host} ^en.one$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/admin         
RewriteRule ^(.*) http://www.en.me/ [R=301,L]

我相信可以有更好的解决方案,但这对我来说就像我想要的那样。