2015-04-01 94 views
0

目前我有[any_name].example.com重定向到example.com/?id=[any_name]如何在不更改输入的URL的情况下使用.htaccess重定向?

这是做我的.htaccess代码:

RewriteCond %{HTTP_HOST} !^www\.example.com 
RewriteCond %{HTTP_HOST} ^(.+).example.com 
RewriteRule ^([^/]*)$ http://example.com/?id=%1 [L,R=301] 

我怎样才能改变我的.htaccess使foo.example.com重定向到example.com/?id=foo但仍显示在浏览器的foo.example.com地址栏?

+1

是'foo.example.com'和'example.com'主办了相同的文档根目录下的同一台服务器上 – 2015-04-01 03:42:31

+0

是,我正在使用通配符(* .example.com),它指向与example.com相同的根文件夹 – 2015-04-01 05:27:21

回答

1

当使用R标志,或者如果包括协议/域(例如http://example.com,mod_rewrite的将浏览器重定向而不是内部重写该请求。将浏览器重定向使浏览器加载新的URL,这改变了。在URL地址栏要删除那些让你有:

RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{HTTP_HOST} !^www\.example.com 
RewriteCond %{HTTP_HOST} ^(.+).example.com 
RewriteRule ^([^/]*)$ /?id=%1 [L,QSA] 
+0

此解决方案不再更改显示的URL,但现在我得到了一个“50 0内部服务器错误“页面,我输入任何子域名。 – 2015-04-01 18:16:22

+1

@ClaytonKirlew忘记了一个条件,请参阅编辑 – 2015-04-01 18:22:51

+0

现在几乎可以正常工作。它正在执行内部重定向,但GET变量不附加子域名。 'foo.example.com'内部重定向到'foo.example.com/?id =',就好像'%1'不存在一样。 – 2015-04-01 18:41:24

相关问题