2011-02-04 127 views
0

是我遇到了一個代碼的.htaccess需要幫助

RedirectPermanentRewriteRule

的區別

RewriteRule ^coaching/([^/]+)/?$ search_result.php?categoryName=$1 [NC,L] 

另一個設置

RedirectPermanent "/coaching/Run to live" http://www.example.com/coaching 

前者規則打破我的設置我也不能刪除。

它使輸出像這樣

http://www.example.com/coaching?categoryName=Run%20to%20live 

什麼應該被添加,使得在不改變第一代碼我可以acheive結果

http://www.example.com/coaching 

回答

2

RewriteRule指令來自mod_rewrite,而RedirectPermanent指令來自mod_alias

在這種情況下,它們不能很好地一起玩。 RedirectPermanent使用原始URL /指導/運行生活,但看到修改後的查詢字符串?categoryName =運行%20to%20live由您的RewriteRule創建。雖然這是一種意想不到的情況,但這是一個在每個目錄(.htaccess)上下文中一起使用mod_rewrite和mod_alias的問題。

由於無論如何您需要使用mod_rewrite作爲原始RewriteRule,所以最好的選擇是使用RewriteRule而不是RedirectPermanent進行第二次操作。這將是這個樣子:

# Perform this redirect first 
RewriteRule "^coaching/Run to live$" http://www.example.com/coaching [R=301,L] 

RewriteRule ^coaching/([^/]+)/?$ search_result.php?categoryName=$1 [NC,L] 
1

的差(在一定條件下)是用永久重定向HTTP響應是301(永久重定向) - 告訴瀏覽器/爬行程序頁面已經永久移動... RewriteRule返回302(除非在選項中另有指定) - 這意味着瀏覽器此redir ection是「臨時的」,並且在未來的日期,該鏈接將再次提供所請求的內容。

+0

我將廣告重定向和永久重定向是Apache的指令,從mod_alias中,我認爲,可以處理基本的重定向,重寫規則是mod_rewrite的東西,可以做同樣的工作,更復雜事情也是如此。通常人們不知道他們可以在沒有mod_rewrite的情況下執行簡單的重定向規則。 – regilero 2011-02-05 20:40:47