2016-07-29 40 views
0

我在.htaccess文件中遇到了一个小问题,我查看了一些堆栈链接,但无法解决我的问题。多站点条件.htaccess

我主持了多域名网站,我要的是:如果有一个子域,我访问此网址

subdomain1.example.com/sitemap.xml 
subdomain2.example.com/sitemap.xml 

这应该从subdomains/subdomain1拿起sitemap.xml的文件subdomains/subdomain2分别与这条规则的伟大工程:

RewriteCond %{HTTP_HOST} ^(.*)\.example(.*).com [NC] 
RewriteRule ^(sitemap.xml|robots.txt)$ subdomains/%1/$1 [L,NC] 

如果www.example.com然后皮卡来自项目根文件夹的sitemap.xml

我已经试过这一点,但不工作:

RewriteCond %{HTTP_HOST} ^www.example.com [NC] 
RewriteRule ^(sitemap.xml|robots.txt)$ http://www.example.com/$1 [L,NC] 

它给了我500 internal server错误。

任何帮助?

+0

无论何时遇到500错误,绝对首先要考虑你总是去检查服务器的错误日志。 – CBroe

+0

它导致我重定向循环。 –

回答

1

您的RegEx条件在RewriteCond %{HTTP_HOST} ^(.*)\.example(.*).com [NC]甚至匹配www.example.com,所以会出现重定向循环。

您指定为RewriteCond %{HTTP_HOST} ^www.example.com [NC]重写条件的替代是行不通的,因为它是不匹配www.example.com

试试这个正则表达式的条件

^(?!www).*\.example(.*).com

OR

RewriteCond %{HTTP_HOST} ^(?!www).*\.example(.*).com [NC]

+0

这是行得通的,我做了一个小改动,这样做,^(?! www)(。*)\。example(。*)。com –