2012-11-09 107 views
1

我正在使用相同的域名將我當前的靜態網站移動到Wordpress。.htacess自定義重定向規則與Wordpress重定向規則衝突

舊網站和新網站都在根文件夾中具有其內容,並且也具有相同的文件名,但在新(Wordpress)網站上,我已刪除當前網站上存在的.php擴展名並添加了尾部斜線,根據WordPress的永久鏈接。

所以我需要重定向所有的舊網頁(例如): /contact-us.php - > /接觸-US/

我試圖在證據充分的選項,如(和變化此):

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.php$ /$1 [R=301,L] 

但這似乎與WordPress的的.htaccess規則相沖突:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

當我嘗試訪問www.site.com/contact-us.php,我GE將無限循環或重定向到www.site.com/index(no .php,無尾隨斜線),該Wordpress顯示爲404頁面。

我嘗試過,沒有第一套重寫條件(因爲我看到它們在Wordpress規則中重複),並且還在Wordpress規則之前和之後放置了我的規則。沒有快樂。過去幾個小時我也一直在Google上搜索,但似乎沒有人解決過這個問題。我通常會通過搜索找到自己想找的東西,所以我真的很無奈地發帖((這是爲什麼這是我的第一篇文章!)

如果有人能幫忙,我會非常感激。

回答

0

由於php後綴,嘗試進行.htaccess重定向時,您會看到循環運行。也許別人知道一個解決方案。

但嘗試一個名爲Redirection « WordPress Plugins.的插件出於好奇,我試着從contact-us.php重定向到contact-us /並且它工作正常。該插件重定向通過PHP而不是寫入.htaccess,這可能是不同的。

我一直在使用插件來主要登錄404的,並做一些重定向。它不會佔用太多的網站開銷。

請確定並將選項設置爲不執行「URL監視」,因爲它會將自動重定向設置爲手動更改其固定鏈接的帖子/頁面。並將您的404日誌記錄設置爲一天或兩天,因爲日誌可能會很快變大,並導致巨大的數據庫表。

+0

大!我實際上已經嘗試過這個插件和其他插件,但他們不適合我 - 我現在看到它是一個瀏覽器緩存問題。我已經使用一個正則表達式規則重新設置了重定向,清除了緩存並且迄今爲止工作正常。非常感謝您的幫助。 – spyk

0

嘗試使用這樣的:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

#Rewrite /something.php to /something/ 
RewriteRule (.*)/(.*)\.php$ $1/$2/ [R=301,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

此方法將改寫: /contact-us/test/hello.php - >/contact-us/test/hello/

如果你不想子目錄改寫替換爲6號線:

RewriteRule /(.*)\.php$ /$1/ [R=301,L]

+0

謝謝,我試過了,但是它再次發送給/ index,並帶有404消息。我一直在閱讀更多,顯然問題在於Wordpress使用index.php文件作爲所有固定鏈接的「前端控制器」。如果你知道任何方法,這將是很好 - 我寧願使用htaccess文件比php重定向。 – spyk