我的 .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} ^.....$