2016-05-25 165 views
1

我對我的網站的.htaccess文件有點麻煩。我希望將page.html和網頁/網址重定向到沒有任何後綴的網頁。我已經能夠關閉.html,但是當進入頁面/ URL時,無論我嘗試什麼(Apache 2.4.18),都會發生內部服務器錯誤。重定向.html和尾部斜槓

下面是完整的.htaccess代碼(沒有任何企圖刪除尾隨斜線)

Options +FollowSymLinks -Indexes -MultiViews 

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} ^website\.com$ [NC] 
RewriteRule ^(.*)$ http://www.website.com/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^.*/index.html 
RewriteRule ^(.*)index.html$ http://www.website.com/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+)$ $1.html [L,QSA] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule ^(.*)\.html$ /$1 [R=301,L] 

我想什麼做的僅僅是複製過去的6行,對html的工作,但有它採取的行動反斜槓,但我不知道如何做到這一點,或者如果有更好的解決方案。任何意見是極大的讚賞!

回答

1

刪除尾隨斜線做到這一點:

RewriteEngine on 
RewriteRule (.+)/$ /example/$1 [L,R=301] 

要去除多餘的斜線:

RewriteCond %{THE_REQUEST} // 
RewriteRule .* $0 [R] 
+0

感謝thickguru,這似乎工作!以前,我曾嘗試使用.html重定向下的相同或相似的代碼,但將它放在它上面似乎有一切正常。不勝感激! –

+0

奇怪的是,當我輸入mydomain.com/page/時,它會重定向到mydomain.com//page,然後當我再次輸入mydomain.com/page/時,它會重定向到mydomain.com/page,並在每次都有兩個斜槓和一個斜線版本。任何想法,如果這是可以解決的?這兩項工作都沒什麼大不了,但保持清潔會很好。 –

+0

嘿@ L.Thane,這很奇怪......你可以嘗試在重寫過程中添加額外的斜線,但我不確定這是否可行。我已經編輯了一個應該排除多餘的斜線的規則。 – Lag

0

您是否嘗試過類似

(\.html|\/) 

我不是我的Mac上的權利,但你可以用或操作員做。

檢查它在https://regex101.com/與多個URL。

+0

感謝托比亞斯,我試圖替換\ html的\這一說法,但它似乎導致所有轉到內部服務器錯誤的URL。它是否也需要去其他地方? –