1

私が抱えている問題は、最初のURLが機能し、2番目のURLが機能しないことです。

http://www.example.com/podcast/episode1
http://www.example.com/podcast/episode1/

すべての末尾のスラッシュバージョンを非末尾のスラッシュバージョンにリダイレクトする方法はありますか?

これらのどちらも機能しないため、ここでは問題はさらに悪化します。

example.com/podcast
example.com/podcast/

これだけが機能します:

example.com/podcast.html

html拡張子を表示したくありません。

これまでのところ、.htaccessファイルにあるコードは次のとおりです。

#shtml

AddType text/html .html
AddHandler server-parsed .html

#html

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

#index redirect

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://example.com/ [R=301,L]

#non www to www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

あなたは私を助けることができます?

4

1 に答える 1

4

末尾のスラッシュを削除するのは簡単です。削除すること.htmlはできません。

スラッシュを削除する

スラッシュが表示されている場合は、R=301リダイレクトだけです。

RewriteRule ^(.*)/$ $1 [R=301]

Lこのリクエストの処理を続行するため、フラグを追加しないでください。また、それを最初のルールにします。

削除できない理由.html

問題は、(内部リダイレクトを介して)にpageなると、サーバーに新しいリクエストが送信されることです。したがって、.htaccessはのリクエストを確認し、にリダイレクトします。無限ループをキューします。page.htmlpage.htmlpage.htmlpage

コードの最適化

  1. RewriteEngine Onあなたはあなたの上部に一度だけ必要です.htaccess
  2. wwwコードの先頭にリダイレクトを追加し、Lフラグを削除する必要があります(スラッシュの削除を参照) 。
于 2012-06-30T07:09:56.600 に答える