Удаление расширения файла .htaccess не работает (пробовано много решений) - PullRequest
2 голосов
/ 18 января 2012

Я целыми днями рыщу через Google, сейчас пытаюсь найти решение своей проблемы, исправляя фрагменты кода безрезультатно.Ничего не сработало.Я просто хочу удалить расширение .shtml из моего URL, но НИЧЕГО не работает.Я удостоверился, что файл обновляется, и мой веб-сайт не загружается из кеша и все такое гадость.Может кто-нибудь сказать мне, где я не так, пожалуйста?

Единственное, о чем я могу думать, это то, что на моем веб-хостинге (Hostgator) не включен Apache mod_rewrite?

RewriteEngine On

#Remove file extensions
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.shtml -f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.shtml [L]

#Add trailing slash
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mythofechelon.co.uk/$1/ [L,R=301]

Помощь будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Вместо кода удаления вашего расширения вместо этого используйте этот код:

# To externally redirect /dir/foo.shtml to /dir/foo
RewriteCond %{THE_REQUEST} ^GET\s.+\.shtml [NC]
RewriteRule ^(.+)\.shtml$ /$1 [R=301,L,NC]

# To internally redirect /dir/foo to /dir/foo.shtml
RewriteCond %{REQUEST_URI} !\.shtml$ [NC]
RewriteCond %{REQUEST_FILENAME}.shtml -f
RewriteRule . %{REQUEST_URI}.shtml [L

Добавление завершающего слеша

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

Однако имейте в виду, что даже URIhttp://domain.com/foo#aaa станет http://domain.com/foo/#aaa, потому что нет способа обнаружить # из mod_rewrite, так как это полностью обрабатывается браузерами.

0 голосов
/ 18 января 2012
Options +MultiViews

делает то же самое.

...