2015-04-01 99 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

相關問題