2013-06-30 32 views
0

我很難從.htaccess獲得正確的重定向。那我試圖重定向如下:難以從.htaccess獲得適當的重定向

原始地址:

http://www.mysite.com/index.php/contact-us?id=12

應該直接到:

http://www.mysite.com/index.php/new-contact-request-form

我試圖在下面的示例各種變化沒有運氣。關於我要去哪裏的任何想法都是錯誤的?

實施例1:

Redirect /index.php/contact-us?id=12 http://www.mysite.com/index.php/new-contact-request-form 

實施例2:

RewriteCond %{QUERY_STRING} ^index.php/contact-us?id=12$ 

RewriteRule ^index\.php\/new\-contact\-request\-form$ http://www.mysite.com/? [R=301,L] 

實施例3:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [OR] 

RewriteCond %{HTTP_HOST} ^www\.mysite\.com\/index\.php\/contact\-us\?id\=12$ 

RewriteRule ^/?$ "http\:\/\/www\.mysite\.com\/index\.php\/new\-contact\-request\-form" [R=301,L] 

回答

0

URL結構: enter image description here

%{QUERY_STRING}變量包含URL查詢字符串(這是在我們的情況下,ID = 12),

在另一方面

RewriteRule URL路徑上僅操作(不包括查詢字符串),

所以基本上,該檢查下面的代碼,如果查詢字符串等於id=12如果URL路徑等於index.php/contact-us,如果是這樣,重定向將於

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^id=12$ 
RewriteRule ^index\.php/contact\-us$ /index.php/new-contact-request-form? [R=301,L] 
+0

你可以添加一個解釋你的答案嗎?謝謝。 –

+0

我已經添加了一些解釋,希望它有幫助:) –

+0

謝謝你通過回答。我相信我幾乎已經解決了。我曾嘗試過您提供的示例: 'RewriteEngine on' 'RewriteCond%{QUERY_STRING}^id = 12 $' 'RewriteRule^index \ .php/contact \ -us $ /index.php/new-contact- request-form [R = 301,L]' 唯一的問題是URL重定向到在重定向鏈接上保留'id = 12'查詢字符串。這給了我以下結果: 'http://www.mysite.com/index.php/new-contact-request-form?id = 12' 我需要它完全消除查詢字符串,什麼調整將需要解決這個問題? – Presto