2013-08-03 120 views
0

我有一個移動網址,我想重定向到子域m。htaccess mod_rewrite子域

即example.com/mobile到m.example.com上

然而,當我有網址example.com/mobile/boston_resources/

重定向到m.example.com/mobile/ ?boston_resources(而不是m.example.com/mobile/boston_resources/)/城市=波士頓

我使用:

RewriteCond %{QUERY_STRING} page=[1-9]+  [NC,OR] 
RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1 

任何幫助表示讚賞

回答

0

添加尾隨?到您的匹配刪除任何查詢字符串禮物。

RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1? 

其次,RewriteCond並不適用於RedirectMatchRewriteRule

RewriteCond %{QUERY_STRING} page=\d+ [NC] 
RedirectRule ^mobile/(.*)$ http://m.example.com/$1? [R=301,L] 

[OR]被丟棄,因爲只有一個RewriteCond[1-9]+改爲包括10等。請注意,把一個RewriteCond說,只有當你在查詢字符串中有page=重定向。如果您需要重定向而不管這些情況,請放棄條件並保留規則。

+0

嗨,謝謝,但這給了一個內部錯誤。 – martyn

+0

除此之外,我注意到example.com/mobile/boston_resources/在不使用我的腳本的情況下正確重定向 – martyn

+0

@martyn,(1)您忘記了告訴您哪種方法導致了內部錯誤。 (2)你能告訴爲什麼當需要重定向的URL沒有它們時,你檢查'page ='嗎? (3)你是否有多個'.htaccess'文件,就像子文件夾一樣? (4)有什麼可以添加'?city = boston'的猜測,因爲這似乎是特定於應用程序的。 –

0
RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1? 

似乎要做的伎倆。我犧牲了頁面重定向的必要性。

0

清空瀏覽器緩存或使用其他瀏覽器進行測試。

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} ^page=.+ [NC] 
RedirectRule ^mobile/(.*)$ http://m.example.com/$1? [R=302,L,NC] 

一旦你驗證它是否工作正常,更換R=302R=301。避免在測試mod_rewrite規則時使用R=301(永久重定向)。

相關問題