2014-05-21 58 views
2

我有一個問題(它可能是一個簡單的人,但我從來沒有需要寫正則表達式)如何寫htaccess的301重定向規則,從PHP重定向到HTML

一個SEO專家告訴我,使漂亮的網址,所以我使用了CMS提供的.htaccess文件。 但現在他要求我將舊網址重定向到新網址。

這不起作用

RewriteRule ^index.php?page=kontakt$ /kontakt.html [R=301,L] 

而且這個(至極應該從index.php文件重定向到主網頁)

RewriteRule ^index.php$/ [R=301,L] 

導致sitename.com/?page=kontakt,所以現在我也必須重定向這個。

我該如何解決這個問題?

回答

0

RewriteRule只匹配沒有查詢字符串的基本URL。你需要額外的RewriteCond才能工作。

RewriteCond %{QUERY_STRING} ^page=kontakt$ 
RewriteRule ^index.php$ /kontakt.html [R=301,L] 

編輯: 顯然查詢字符串被保存在這種情況下,所以你可能得到/kontakt.html?page=kontakt

要放棄原來的查詢字符串,你需要把?後URL。

RewriteRule ^index.php$ /kontakt.html? [R=301,L] 
+0

非常感謝您的回答,但是這給了我一個奇怪的結果: ** sitename.com/kontakt.html頁= KONTAKT ** 是有可能這件事情與服務器設置? – Kwiato

+0

它的工作,拯救了我的生命。我一直在爲此奮鬥多年。 非常感謝:D – Kwiato

+0

最後一件事,我怎樣才能在沒有index.php文件的情況下重定向'/?page = kontakt'? – Kwiato