带有url掩码的Apache通配符子域

时间:2015-05-14 14:23:17

标签: apache .htaccess mod-rewrite url-rewriting

我正在尝试使用apache中的url屏蔽来处理通配符子域。 正确的重写规则应该达到以下目的:

http://demo.system.devto http://system.dev?subdomain=demo

http://sample.system.dev/user/edit/100to http://system.dev/user/edit/100?subdomain=sample

http://debug.system.dev/project/edit/newto http://system.dev/project/edit/new?subdomain=debug

到目前为止,我的.htaccess

中有以下规则
RewriteCond %{HTTP_HOST} ^(.*)\.system\.dev
RewriteRule ^(.*?)$ http://system.dev%{REQUEST_URI}?subdomain=%1 [L]
除了浏览器网址也被更改之外,

看起来工作正常。我希望浏览器网址保持不变并在内部路由请求,但我不知道如何实现这一点。

2 个答案:

答案 0 :(得分:1)

您无法在内部重写到其他域。因此,当您转到子域时,它将重定向到主域。因此,您需要使用相对URL,看看它是否适合您。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^(www\.)?system\.dev [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.system\.dev [NC]
RewriteRule ^(.*)$ %{REQUEST_URI}?subdomain=%1 [L]

答案 1 :(得分:0)

在根目录中尝试此规则.htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} !(?:^|&)subdomain= [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.system\.dev$ [NC]
RewriteRule (.*) $0?subdomain=%1 [L,QSA]