2012-06-06 103 views
1

我有一個運行在Apache服務器上的Jekyll生成的網站,我在正確設置我的.htaccess文件時遇到了一些麻煩。 Jekyll將index.html文件放入代表每個頁面的文件夾中,以便我的URL目前看起來像domain.com/foo/.htaccess顯示目錄index.html沒有斜線

我想從URL中刪除尾部斜槓,以便它完全符合我之前設置的內容(也因爲我認爲它看起來更好)。

目前我的.htaccess文件處理rewites的部分看起來像:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 
</IfModule> 

Options -Indexes 

DirectoryIndex index.xml index.html 

我曾嘗試以下建議here但這使我變成了一個重定向循環。

有人可以幫我嗎?簡而言之,我想要的是爲domain.com/foo網址顯示index.html文件的形式/ foo目錄,併爲domain.com/foo/和domain.com/foo/index.html重定向到域。 COM/foo中。

回答

3

您應該可以使用它關閉斜槓的添加。

DirectorySlash Off 

注意,斜槓添加一個很好的理由。無論URL以「foo/bar/index.html」結尾還是「foo/bar /」結尾,目錄名中的尾部斜槓都會使相對URL指向相同的東西。如果沒有結尾的斜槓,相對URL會從通常指向的某個級別引用某個級別。 (例如:「baz.jpg」會給用戶「/foo/baz.jpg」而不是「/foo/bar/baz.jpg」,因爲如果它沒有被保護,尾隨的「bar」將被刪除尾隨斜線。)所以,如果你這樣做,你可能想避免相對的URL。

要重新寫目錄名返回的index.html你也許可以做這樣的事情:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}/index.html -f 
RewriteRule ^(.*)$ /$1/index.html [L] 

此檢查REQUEST_URI/index.html的存在,如果它執行內部重定向。

+0

感謝您的回覆,我認爲這可能是答案的一半。這會阻止domain.com/foo重寫爲domain.com/foo/,但它不會從/ foo /目錄中顯示index.html文件 – mrappleton

+0

@mrappleton您可能需要添加單獨的重寫。我添加了一些可能適用於答案的東西。 –

+0

這是非常明智的。我只需要添加'RewriteRule ^(。+)/ $ http://floatleft.com/$1 [R = 301,L]',我得到了我之後的東西。非常感謝你的幫助! – mrappleton

相關問題