带有子域和GET请求的.htaccess

时间:2014-01-22 15:18:24

标签: apache .htaccess mod-rewrite rewrite subdomain

当用户访问 test.domain.co.uk 时,我想在 channels / index.php?url = test 中向他们显示页面 >测试可以是任何东西。

我使用以下代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.co\.uk$
RewriteCond %{HTTP_HOST} ^.+\.domain\.co\.uk$
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^(.+)\.domain\.co\.uk/? channels/index.php?url=$1 [L]

但是,如果您拨打 http://test.domain.co.uk/login/

,我也希望它能够正常工作

它会显示 channels / index.php?url = test& page = login

我尝试了几种方法,只是将其显示为?url = test

2 个答案:

答案 0 :(得分:0)

添加

RewriteRule ^(.+)\.domain\.co\.uk(.+)$ channels/index.php?url=$1&page=$2 [L]

到你的规则结束。并在上一条规则的模式中添加$

RewriteRule ^(.+)\.domain\.co\.uk/?$ channels/index.php?url=$1 [L]

然后,为了避免循环,请将其添加到顶部:

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

答案 1 :(得分:0)

您可以使用此规则:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.co\.uk$
RewriteRule ^((?!channels/index\.php).*)$ /channels/index.php?url=%1&page=$1 [L,QSA]