0

これまでのところ、私.htaccessは次のようになっています:

  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
  RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
  <FilesMatch "\.(htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$">
    RewriteEngine Off
  </FilesMatch>
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule .* index.php [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule .*\.html$ index.php [L]

末尾にスラッシュがある URL を、スラッシュがない URL にリダイレクトしたいと思います。ただし、ディレクトリのスラッシュは保持する必要があります。

どんな助けでも大歓迎です!

更新:Googleの調査をさらに行った後、私はいくつかの実用的なソリューションを組み立てました。末尾のスラッシュを削除するための書き換えと www のリダイレクトの両方が機能しています。

  RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [L,R=301]
  RewriteCond %{HTTP_HOST} ^rudolfapotheke.de$ [NC]
  RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [L,R=301]
4

2 に答える 2

1

まず、私はあなたFilesMatchをに変更しますRewriteCond

RewriteCond %{REQUEST_FILENAME} !\.(?:htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

次のパターンを単純化しますRewriteRule

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.html$ index.php [L]

または、2 つのルールをまとめてテストします。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

最後に、末尾のスラッシュを削除するルール

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R,L]
于 2013-03-11T10:21:37.090 に答える
0

末尾のスラッシュでそれらをリダイレクトするには、パスがディレクトリであるかどうかを確認し、ファイル名が一致RewriteCondする場合は a を含める必要がありますRewriteRule/$

したがって、次のようになります。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ $1 [R=permanent,L]
于 2013-03-10T20:52:06.840 に答える