1

現時点では、末尾のスラッシュを許可するか、末尾のスラッシュを許可しない htaccess の書き換えがあります。

RewriteRule ^trams/([a-zA-Z\-]+)/([a-zA-Z0-9\-]+)/([0-9-]+)/?$ trams/more_details.php?id=$3&tram=$1 [QSA,NC,L]

上記の特定の書き換えについて、URL の末尾にスラッシュがある場合、末尾にスラッシュがないバージョンに 301 リダイレクトされるように変更しようとしていますが、上記の行に何を追加すればよいかわかりません。

問題を複雑にするために、ウェブサイト全体の特定の URL に末尾のスラッシュを追加する htaccess ファイルの先頭にコード ブロックがあります (これはウェブサイトの残りの部分の要件であり、矛盾して申し訳ありません)。上記のルールを無視するために、下のブロックに追加する必要がある行を把握するには....

# If requested resource does not exist as a file
RewriteCond %{REQUEST_FILENAME} !-f
# and does not end with a period followed by a filetype
RewriteCond %{REQUEST_URI} !\..+$
# and does not end with a slash
RewriteCond %{REQUEST_URI} !/$
# then add a trailing slash and redirect
RewriteRule (.*) http://%{HTTP_HOST}/$1/ [R=301,L]
4

1 に答える 1

1

特定の URL パターンから末尾のスラッシュを削除するには:

RewriteRule ^(trams/[\w-]+/[\w-]+/[\d-]+)/$ $1 [R=301,L]

# If requested resource does not exist as a file 
RewriteCond %{REQUEST_FILENAME} !-f 
# and does not end with a period followed by a filetype 
RewriteCond %{REQUEST_URI} !\..+$ 
# URL is not the one we don't want a trailing slash
RewriteCond %{REQUEST_URI} !^/trams/[\w-]+/[\w-]+/[\d-]+$ 
# then add a trailing slash and redirect 
RewriteRule ^(.+?[^/])$ http://%{HTTP_HOST}/$1/ [R=301,L]

PS:このルールは、他のすべての既存のルールの上に置くようにしてください。

于 2013-09-11T15:41:19.523 に答える