我搜索过类似的问题,但找不到与我需要的完全匹配。
我有一个通配符子域设置,我想将所有访问者重定向到 anysubdomainhere.maindomain.com到anysubdomainhere.maindomain.com/mypage.html
我也希望所有访问过没有子域名前缀的访问者都能正常行事。
我的htaccess中有以下内容,但我在浏览器中收到“太多重定向”的错误。
RewriteCond %{HTTP_HOST} ^([^/.]+)\.maindomain\.com$
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule (.+)$ "http://%1.maindomain.com/mypage.html" [L,P]
非常感谢任何帮助。
答案 0 :(得分:1)
您可能不希望P
标志。用于代理。您希望R
标志用于重定向。
循环可能是因为/mypage.html
也匹配正则表达式(.+)$
这一事实,因此您需要添加例外:
RewriteCond %{HTTP_HOST} ^([^/.]+)\.maindomain\.com$
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteCond $1 !mypage\.html
RewriteRule (.+)$ "http://%1.maindomain.com/mypage.html" [L,R]
答案 1 :(得分:0)
那是因为当访问者到达mypage.html时,您再次重定向(并再次)。 您可以将其更改为:
RewriteCond %{REQUEST_URI} !^/mypage.html [NC]
RewriteCond %{HTTP_HOST} ^([^/.]+)\.maindomain\.com$
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule (.+)$ "http://%1.maindomain.com/mypage.html" [L,R]
(注意我此时无法测试,因此上面可能包含错误)
另请注意,当访问者访问另一个页面后,您将再次重定向到mypage.html。 所以也许您想要使用以下规则:
RewriteCond %{REQUEST_URI} !^/$ [NC]
在这种情况下,您可以将用户重定向到"主页"仅