mod_rewrite:同时进行 url 重写和子域名(通配符)重写

mod_rewrite:同时进行 url 重写和子域名(通配符)重写

我的 .htaccess 文件中有两条用于 URL 重写的规则:

  1. 对于子域名重写: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} ^.....$

相关内容