您好,我对带有 htaccess 和 mod_rewrite 的通配符子域有疑问。
我想将 www.domain.com/index.php?foo=x&bar=y 翻译成 xy.domain.com
我的 htaccess 看起来像这样
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteCond %{HTTP_HOST} ^(.*?)-(.*?).domain.com$
RewriteRule (.*) /index.php?foo=%1&bar=%2
这项工作但有一个小问题,如果我去 xy.domain.com。它显示 www.domain.com,但如果我转到 xy.domain.com/z('z' 可以是每个值,甚至是 'asdfasdfasdfasdfasdf')它会显示正确的页面,我的应用程序不会将 z 用于它就在那里的任何东西无缘无故,但有必要显示正确的页面。
解决方案
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*?)-(.*?).domain.com$ [NC]
RewriteRule (.*) index.php?foo=%1&bar=%2 [NC]
我不知道为什么它有效,但它有效