我在.htaccess
文件中遇到了一些小问题,我查看了一些堆栈链接,但无法解决我的问题。
我托管了一个多域名网站,我想要的是:如果有子域名并且我访问此网址:
subdomain1.example.com/sitemap.xml
subdomain2.example.com/sitemap.xml
这应该分别从subdomains/subdomain1
和subdomains/subdomain2
获取 sitemap.xml 文件,这对此规则非常有用:
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 :(得分:1)
RewriteCond %{HTTP_HOST} ^(.*)\.example(.*).com [NC]
中的RegEx条件与www.example.com
匹配,因此会有重定向循环。
您指定为RewriteCond %{HTTP_HOST} ^www.example.com [NC]
的重写条件替代方案无法正常工作www.example.com
尝试此正则表达式
^(?!www).*\.example(.*).com
OR
RewriteCond %{HTTP_HOST} ^(?!www).*\.example(.*).com [NC]