Как добавить слеш после удаления расширения HTML - PullRequest
0 голосов
/ 29 февраля 2012

как добавить / в конце, используя следующий код после удаления расширения html:

Options +FollowSymLinks -MultiViews
DirectorySlash off

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME}/ -d
RewriteCond %{SCRIPT_FILENAME}.html !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.html$ /$1 [R=301,L]

RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L]

1 Ответ

0 голосов
/ 29 февраля 2012

Вам нужно будет внести некоторые изменения.

Options +FollowSymLinks -MultiViews

RewriteEngine On    
RewriteBase /

#Code to add forward slash
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(?:\.\w+|/)$
RewriteRule (.*) $1/ [R,L]

#To check whether a .html appended string is a file existing on the system 
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule (.*)/ $1.html [L]

#### NOT REQUIRED
#RewriteCond %{SCRIPT_FILENAME}/ -d
#RewriteCond %{SCRIPT_FILENAME}.html !-f
#RewriteRule [^/]$ %{REQUEST_URI}/ [R,L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.html$ /$1 [R,L]

Также эти правила не будут работать должным образом:

RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]+/$ %{REQUEST_URI}.html [QSA,L]

cos, %{REQUEST_URI} всегда будет иметь / в конце. Если запрашивается URI, такой как domain.com/about,

Он будет переписан на:

domain.com/about/

и, наконец,

domain.com/about/.html
...