2017-03-17 163 views
0

我知道有些類似的問題已經被問到,是的,我讀過所有相關答案,並嘗試了一段時間。但我無法弄清楚錯誤是什麼。我相信劇本是正確的。到底是怎麼回事?htaccess尾部斜槓錯誤

我的問題是,我不能讓後面的斜槓出現在網址中。因此我得到了同一頁面的兩個版本。 (重複的內容問題?)例如:

htttps://www.example.com/faq.php

&

htttps://www.example.com/faq.php/

我曾希望總是自動添加尾部斜槓,所以沒有其他版本相同。

這裏是我的.htaccess代碼:

<IfModule mod_rewrite.c> 

    RewriteEngine On 

    #Redirect anything to http://www (WORKING FINE) 
    RewriteCond %{HTTP_HOST} ^example.com [NC] 
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 

    #Redirect anything to https (WORKING FINE) 
    RewriteCond %{HTTPS} !on 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

    #Redirect to trailing slash (NOT WORKING!) 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !(.*)/$ 
    RewriteRule ^(.*)$ https://example.com/$1/ [L,R=301] 

    #Redirect /index.php to/(WORKING FINE) 
    RewriteCond %{THE_REQUEST} ^.*/index\.php 
    RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

</IfModule> 

而且一個在同更多的問題。

這是什麼,當我去我的域後面的斜槓「/」沒有顯示在網址中。然後,我複製&將其粘貼到文本編輯器中,並以尾部斜槓作爲https://www.example.com/

但是,當我複製/粘貼從任何子頁面的網址,例如/faq.php(不要像:/ faq.php/shwoing)一樣不會發生。

我知道根域中的尾部斜槓對於使HTTP請求有效是必要的,但爲什麼瀏覽器不顯示它?只是一個美學的東西?無論如何,我更關心上述問題。

非常感謝您的幫助!

回答

0

但是我無法弄清楚錯誤是什麼。我相信劇本是正確的。到底是怎麼回事?

您正在檢查重定向之前文件是否不存在。這是不是你想要的,所以刪除此行:

RewriteCond %{REQUEST_FILENAME} !-f 

它是如何,當我去我的域名,其中尾部斜槓「/」未在URL顯示。然後,我複製&將其粘貼到文本編輯器中,並以尾部斜槓作爲https://www.example.com/

某些瀏覽器會自動執行此操作。這可能是因爲這是所請求的實際URL。它也使它看起來更像一個URL。

+0

非常感謝您的回答。欣賞它!由於一些奇怪的原因,它不起作用。我只使用:(。*) RewriteBase/ 的RewriteCond%{REQUEST_URI}(。*)/ $ 重寫規則^ $ https://example.com/$1/ [L,R = 301] 我現在得到的結果是: 「www.example。「 ERR_TOO_MANY_REDIRECTS 並且網站根本沒有顯示。 –

+0

你改變了你的問題的最後一行,應該是'RewriteRule ^(。*)$ https://example.com/$1/ [L,R = 301]'。 – Anonymous