2017-08-31 171 views
1

在phpmydirectory框架中,我嘗試使用.htaccess 301重定向將舊頁面URL重定向到新頁面URL。Phpmydirectory - 刪除301重定向中的額外查詢字符串

例如:http://example.com/pages/newurl.html?id=old-friendly-url

重定向的作品,但在新的URL的結尾,老友好的URL串接爲ID。

我該如何避免這種情況?

RewriteRule ^pages\/(.+)\.html$ page.php?id=$1 [L,NC] 
Redirect 301 /pages/features.html /pages/ost-to-pst-ost-to-office365-ost-to-exchange-migrator.‌html? 
+1

向我們展示您的.htaccess文件? – Bhavin

+0

或者,具體來說,顯示您當前的重定向。根據當前用於執行重定向的方法,您可能需要添加一個字符或使用其他方法重寫指令。 – MrWhite

+0

RewriteRule^pages \ /(。+)\。html $ page.php?id = $ 1 [L,NC] 重定向301 /pages/features.html/pages/ost-to-pst -ost-to-office365 -Ost到交換migrator.html? –

回答

0
Redirect 301 /pages/features.html /pages/ost-to-pst-ost-to-office365-ost-to-exchange-migrator.‌html? 

想必這是有問題的重定向?如果它已在最後包含?,那麼原始請求上的查詢字符串應該已經被刪除 - 但是,如果使用mod_alias Redirect,則最終將在目標URL上尾隨?

您應該使用mod_rewrite來代替執行此重定向。由於您已經在使用mod_rewrite進行內部重寫,因此建議使用此模式以避免潛在的衝突。

您的原始重定向不檢查查詢字符串,所以我認爲這不是必需的 - 您只需要匹配URL路徑。

下重定向前應現有的內部重寫去

RewriteRule ^pages/oldurl\.html$ /pages/newurl.html? [R,L] 

RewriteRule替代尾隨?去除請求的查詢字符串。或者,使用Apache 2.4+上的QSD標誌

+1

非常感謝!這對我有用:) –

相關問題