2016-05-25 19 views
1

私のサイトの.htaccessファイルに少し問題があります。私はpage.htmlとpage/URLsの両方を接尾辞なしでページにリダイレクトしたいと思っています。私は.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] 

は、私は何をしたいことがちょうど.htmlのために働いていた最後の6行をコピーが、持っているのです代わりに後続のスラッシュで動作しますが、それをどうやって行うのか、より良い解決策があるかどうかはわかりません。どんなアドバイスも大歓迎です!

答えて

1

これを行う

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

thickguruありがとう、これは動作するようです!以前は、同じまたは類似のコードを.htmlリダイレクトの下で試してみましたが、上に置くとすべてうまく動作しているようです。大変感謝しています! –

+0

私は奇妙なことに、mydomain.com/page/を入力するとmydomain.com//pageにリダイレクトされ、次にmydomain.com/page/に入るとmydomain.com/pageにリダイレクトされ、毎回2つのスラッシュと1つのスラッシュバージョン。それは修正可能かどうか?両方の仕事が大事なことではありませんが、それをきれいに保つのはうれしいでしょう。 –

+0

ちょっと@ L.Thane、それは変です...リライタルルに余分なスラッシュを入れてみることもできますが、それがうまくいくかどうかは分かりません。余分なスラッシュを取り除くはずのルールで私の答えを編集しました。 – Lag

0

は、あなたが、私は今、私のMac上でないんだけど、あなたがまたはオペレータでそれを行うことができ

(\.html|\/) 

のようなものを試してみました。

https://regex101.com/に複数のURLを付けて確認してください。余分なスラッシュ削除するには

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

:最後のスラッシュを削除するには

+0

おかげトビアスを、私はそれで、\ .htmlを\を交換しようとしたが、すべての原因となるように見えました内部サーバーエラーになるURL。他の場所にも行く必要がありますか? –

関連する問題