2017-03-23 87 views
0

我有一些URL可以輸入或不帶尾部斜線。他們被用作虛榮網址。mod_alias重定向添加兩個尾部斜線

的.htaccess看起來像這樣:

Redirect 301 /folder/vanity1 http://example.com/differentfolder/ 
Redirect 301 /folder/vanity2 http://example.com/a/third/folder/ 
Redirect 301 /vanity3 http://example.com/fourth/folder/ 

用戶鍵入:

http://example.com/folder/vanity1 
http://example.com/folder/vanity2 
http://example.com/vanity3 
http://example.com/folder/vanity1/ 
http://example.com/folder/vanity2/ 
http://example.com/vanity3/ 

當用戶在一個沒有結尾的斜線鍵入這些,重定向工作正常,結束了在http://example.com/differentfolder/根據需要帶有一個尾部斜線。

問題:

當用戶在以斜線鍵入這些,如http:/example.com/folder/vanity1/它們重定向到URL具有兩個縱斜線,如http://example.com/differentfolder//會拋出404錯誤。

我曾嘗試:

  1. 從的.htaccess刪除所有其他行,除了這三個個性化網址和保持網站運作所需標準的WordPress塊。 WordPress的塊出現在文件的末尾:

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

我檢查不僅與我的瀏覽器,但與WebConfs HTTP報頭校驗,以確保我沒有看到一個緩存規則。還是一樣,如果你輸入一個沒有結尾斜槓的虛榮URL,它就可以工作;如果用一個結尾的斜線鍵入它,它重定向到兩個縱斜線這引起404

  • 添加在我的規則尾隨斜線:
  • Redirect 301 /folder/vanity1/ http://example.com/differentfolder/

    如果用戶鍵入結尾的斜槓,但是如果它們沒有斜槓,它將不會重定向,因爲URL http://example.com/folder/vanity1/實際上並不存在,所以它可以正常工作。

    問:

    是否有不同的方式,以301重定向的個性化網址到最終目標只有一個斜線,無論哪種方式訪客類型的個性化網址 - 有或沒有尾隨削減?超越匹配的URL路徑

    回答

    2

    這部作品在Redirect如記錄,

    附加路徑信息將被附加到目標URL。

    這意味着/folder/vanity1僅作爲前綴使用,並且所請求的URL中的附加斜線或其他內容將附加到目標上。http://example.com/folder/vanity1/hi/there會導致http://example.com/differentfolder//hi/there

    如果要完全匹配這兩個網址,/folder/vanity1/folder/vanity1/,您必須使用RedirectMatchmod_rewrite


    隨着RewriteRule這看起來像

    RewriteRule ^folder/vanity1/?$ /differentfolder/ [R,L] 
    

    由於/?,此模式匹配有或沒有尾部斜線,表示可選的s睫毛。其他規則看起來很相似。

    當一切正常時,您可以用R=301permanent redirect)代替R從不R=301測試。


    而且隨着RedirectMatch,它看起來幾乎一樣

    RedirectMatch ^/folder/vanity1/?$ /differentfolder/ 
    

    相同免責聲明適用於這裏,當它正常工作,您可以將狀態代碼設置爲301

    +0

    ** ^文件夾**應該是**^/文件夾**,因爲RedirectMatch使用絕對路徑。 – starkeen

    +0

    太棒了,謝謝你澄清並提供兩個選項。比另一個更有效率嗎? – WebElaine

    +0

    @starkeen謝謝你接受這個,修正:-) –

    相關問題