![mod_rewrite:同时进行 url 重写和子域名(通配符)重写](https://linux22.com/image/504413/mod_rewrite%EF%BC%9A%E5%90%8C%E6%97%B6%E8%BF%9B%E8%A1%8C%20url%20%E9%87%8D%E5%86%99%E5%92%8C%E5%AD%90%E5%9F%9F%E5%90%8D%EF%BC%88%E9%80%9A%E9%85%8D%E7%AC%A6%EF%BC%89%E9%87%8D%E5%86%99.png)
我的 .htaccess 文件中有两条用于 URL 重写的规则:
对于子域名重写:xxx.domain.com 内部重定向到 file.php?item=xxx
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$ [NC]
重写规则 ^$ /file.php?item=%2 [QSA,nc]
2.普通重写:
重写规则 ^([A-Za-z0-9_)(:!-',]+)/?$ file.php?item=$1 [L]
我需要实现的是编写第三条规则,将这两条规则结合起来,而不会与它们冲突。也就是说,在这几行下面(或上面)我需要有类似的东西
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([A-Za-z0-9_)(:!-',]+)$ [NC]
RewriteRule ^$ /anotherfile.php?item1=%2&item2=$1 [QSA,nc]
以便http://xxx.domain.com/yyy将被重定向到 anotherfile.php?item1=xxx&item2=yyy
有什么可行的想法吗,或者正确的方法是什么?
答案1
你可能很接近了,但 HTTP_HOST 只包含主机名(我认为),而不是 URI,后者在 REQUEST_URI 中。将两者结合起来应该可以得到你想要的东西:
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^.....$