.htaccess通配符重定向修复程序
我正在使用以下代码将通配符子域(*.domain.com)重定向到/users中的相应文件夹,并将/users文件夹中的直接请求重定向到子域版本: 保护对通配符域文件夹的直接访问:.htaccess通配符重定向修复程序,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在使用以下代码将通配符子域(*.domain.com)重定向到/users中的相应文件夹,并将/users文件夹中的直接请求重定向到子域版本: 保护对通配符域文件夹的直接访问: RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC] RewriteRule ^users/([a-z0-9\-_\.]+)/?(.*)$ http://$1.domain.com/$2 [QSA,NC,R,L] 处理通配符子域请求: RewriteCond %{REQU
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^users/([a-z0-9\-_\.]+)/?(.*)$ http://$1.domain.com/$2 [QSA,NC,R,L]
处理通配符子域请求:
RewriteCond %{REQUEST_URI} !^/users/ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteCond %1 !=www [NC]
RewriteRule ^(.*)$ /users/%1/$1 [L]
这段代码运行得很好,但是有两个问题我似乎无法解决
谢谢大家! 对于问题2,我认为您的第一条保护规则只需要重定向所有子域。它正在重定向www,但让username.domain.com按原样通过 这将把任何直接访问请求重定向到用户路径
RewriteCond %{HTTP_HOST} ^.+\.domain\.com$ [NC]
RewriteRule ^users/([a-z0-9\-_\.]+)/?(.*)$ http://$1.domain.com/$2 [QSA,NC,R,L]
我认为只要查找以domain.com结尾的任何主机(它甚至不处理子域,只处理domain.com)就可以简单一点(我没有测试这个…)
对于问题1,我也被难住了,对不起。它的行为就像尾随斜杠不符合规则一样,所以它按原样通过了。但我希望它能像你希望的那样:
username.domain.com/sub1/=>username.domain.com/users/username/sub1/
也许可以尝试%{REQUEST\u URI}
标记,而不是尝试捕获*
。我看不出有什么区别,但也许会有帮助
RewriteCond %{REQUEST_URI} !^/users/ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteCond %1 !=www [NC]
RewriteRule .* /users/%1%{REQUEST_URI} [L]
RewriteCond %{REQUEST_URI} !^/users/ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteCond %1 !=www [NC]
RewriteRule .* /users/%1%{REQUEST_URI} [L]