htaccess:更改地址栏以删除禁止参数

时间:2012-09-20 17:43:28

标签: .htaccess url-rewriting wildcard-subdomain

我尝试使用htaccess创建子域名。 它到目前为止工作正常。我在另一个脚本中使用子域作为Get-Parameter。

但是,如果有人只使用此参数,则会覆盖subdomain-parameter。

user1.domain.com/?site=user2将显示user2.domain.com。 (实习生是www.domain.com/index.php?site=user2)

所以,我尝试将网站从?site = user2重定向到user2.domain,但每次我使用[R] - 修改器时,网址都会被更改,以便您可以看到我的本地文件夹。
RewriteBase / path / to / basefolder也没有帮助。

您是否有人知道如何更改地址栏,以便它实际上不是/?site = user1或/index.php?site=user1,而是user1.domain.com?
或者也许我做错了什么?^^

这是我目前的代码:

RewriteEngine on
Options +FollowSymlinks

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\?]+)\?(.*?)&?site=([^&\ ]+)([^\ ]*)
RewriteRule ^ http://%4.domain.com/%2?%3%5 [L,R]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteCond %{REQUEST_URI} !\.css$ [NC]
RewriteCond %{REQUEST_URI} !\.png$ [NC] 
RewriteRule \.php index.php

RewriteCond %{HTTP_HOST} ^(.*).domain.com$
RewriteCond %{REQUEST_URI} !^/.*/
RewriteRule (.*) index.php?site=%1 [NC,QSA,L]

<Files .htaccess>
order allow,deny
deny from all
</Files>

1 个答案:

答案 0 :(得分:1)

尝试将此项添加到您当前的规则之上(就在Options +FollowSymlinks下方):

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\?]*)\?(.*?)&?site=([^&\ ]+)([^\ ]*)
RewriteRule ^ http://%4.domain.com/%2?%3%5 [L,R]

因此,当有人在URL地址栏中输入类似于http://domain.com/some/path/to/file.php?foo=bar&site=user2&other=param的内容时,他们会被重定向到(并且地址栏更改为):http://user2.domain.com/some/path/to/file.php?foo=bar&other=param