2013-01-08 118 views
0

我有一個WordPress網站(http://www.raynauds.org)根目錄中的htacess文件。我需要所有呼叫重定向到:301在htaccess不重定向

http://www.raynauds.org/?p=2366

到:

http://www.raynauds.org/2012/08/11/dr-maureen-mayes-joins-raynauds-association-medical-advisory-board/

我一個Linxus服務器上運行的Apache。下面的代碼似乎沒有做任何事情來重定向請求。我究竟做錯了什麼?

# BEGIN WordPress 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
# END WordPress 
Redirect 301 /?p=2366 http://www.raynauds.org/2012/08/11/dr-maureen-mayes-joins-raynauds-association-medical-advisory-board/ 
+0

AllowOverride On在您的apache配置中設置? – case1352

回答

1

在查找要執行的文件之前,重寫和重定向都應用於URL。

您的RewriteRules都有[L]標誌,指出這將是修改URL的最後一條規則,因此Redirect將不會用於匹配其中一個RewriteRules的URL。

由於第二個RewriteRule將捕獲您的重定向不起作用的所有請求。 你也可以用重寫規則重定向像

RewriteCond %{QUERY_STRING} p=2366 
RewriteRule . http://www.example.com [R=301,L] 

也看可用的標誌在Manual

當然,這個規則應該去之前的WordPress自身的RewriteCond /重寫規則行工作請。

+0

謝謝...這是有道理的。 301重定向似乎不適用於查詢字符串。當我刪除查詢字符串並使用直接網址時,301工作(只要它在基地之上)。 – SiriusPhil

+0

您可以將當前的.htaccess代碼(包含Dehalion的答案)上傳到pastebin.com,然後在此發佈鏈接,以便我們檢查它嗎? – Wireblue

0

將您的Redirect 301規則移至RewriteBase聲明下方的行。

+0

這並沒有工作..它沒有工作,如果我只是在那裏沒有查詢字符串的URL。這個問題似乎與301. – SiriusPhil

+0

中的查詢字符串不夠公平。我建議Dehalion的答案可能是更好的解決方案。 – Wireblue