【发布时间】:2011-11-16 05:15:26
【问题描述】:
我的目标是指出:
http://xyz.domain.com/abc 到 http://www.domain.com/dir/file.php?var=xyz
(换句话说,任何带有http://_____.domain.com/abc 的内容都将从http://www.domain.com/dir/file.php?var=_____ 读取。)
我在网站根目录 (http://www.domain.com/.htaccess) 的 .htaccess 文件中使用了它:
RewriteCond %{HTTP_HOST} !^www.domain.com [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
RewriteRule ^abc/*$ dir/file.php?var=%2 [NC,L]
它起作用了,但是当我只想要http://xyz.domain.com/abc 而没有显示查询字符串时,它会自动重定向到http://xyz.domain.com/abc/?var=xyz。
我考虑在上面添加 %{QUERY_STRING} 行,但在尝试将两个 RewriteCond 的 vars 相互匹配时卡住了。
然后我在http://www.askapache.com/htaccess/modrewrite-tips-tricks.html#Removing_Query_String找到了这个
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* http://www.askapache.com%{REQUEST_URI}? [R=301,L]
...我猜这是在常规域上摆脱此类内容的正确代码?我尝试通过将其更改为以下内容使其适用于通配符子域:
RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{HTTP_HOST} !^www.domain.com [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com[NC]
RewriteRule .* http://%2.domain.com%{REQUEST_URI}? [R=301,L]
但它不起作用。所以...有人可以帮忙吗?
【问题讨论】:
-
您的文档根目录中是否有“abc”目录?
标签: .htaccess query-string subdomain wildcard