Удалить расширение и добавить косую черту на статический HTML - PullRequest
1 голос
/ 16 декабря 2011

Мой корневой каталог содержит некоторые файлы .html.Я хочу удалить расширение .html в адресной строке и добавить косую черту в конце, например: http://domain.com/page/ Я пробовал множество решений, одно из которых:

RewriteEngine on
RewriteBase /

# redirect from ww to non-www
RewriteCond %{HTTP_HOST} ^www.nightmaar.com$ [NC] 
RewriteRule ^(.*)$ http://nightmaar.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html
RewriteRule (.*)\.html$ /$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.html [L]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule .*[^/]$ $0/ [L,R=301]

Нобраузер выдает ошибку (слишком много перенаправлений).Когда я пытаюсь получить доступ к моим статическим html-страницам, переадресация с page.html на / page / вообще отсутствует.

Помогите, пожалуйста, решить эту проблему: S

1 Ответ

2 голосов
/ 16 декабря 2011

Ты почти сделал это!

Вот что должно работать:

RewriteEngine On
RewriteBase /

# redirect from www to non-www
RewriteCond %{HTTP_HOST} ^www.nightmaar.com$ [NC] 
RewriteRule ^(.*)$ http://nightmaar.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html
RewriteRule (.*)\.html$ /$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.html [L]

# Remove trailing slash:
RewriteRule (.*)/$ $1 [L]

# Now test without the trailing slash:
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule . %{REQUEST_FILENAME}.html [QSA,L]
...