2013-09-17 2 views
0

Я пытаюсь настроить свой сайт с файлом htaccess, чтобы любой запрос, заканчивающийся на .html, был переписан так, чтобы новый URL был идентичен, за исключением того, что «.html» отсутствует в конец. Это должно работать независимо от того, сколько каталогов будет глубоко запрошено.Удаление .html расширений в файле .htaccess

Так, например, http://site.com/page1.html ->http://site.com/page1

http://site.com/dir1/dir2/page2.html ->http://site.com/dir1/dir2/page2

http://site.com/~bob/dir3/page3.html ->http://site.com/~bob/dir3/page3

Я предпочел бы решение, в котором мне не нужно Кодирую имя домена, но это было бы приемлемо в случае необходимости.

Мой текущий .htaccess файл является стандартным файлом Zend Framework .htaccess, и он работает правильно. Я знаю, что мне нужно будет изменить базу перезаписи, если я переведу сайт в другом месте.

SetEnv APPLICATION_ENV development 

RewriteEngine On 

#Send all requests for non-existant files to index.php 
RewriteBase /~rburk/refactor 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 
+0

ли эти HTML страницы, связанные с вашими рамками ZEND? –

+0

Я конвертирую существующий сайт в Zend Framework. На новых страницах нет .html-расширений, а существующие страницы - для того, чтобы старые URL-адреса перенаправлялись на новые. – rburk

ответ

2

Попробуйте добавить эти правила в файл Htaccess в корневом каталоге:

RewriteEngine On 

RewriteCond %{THE_REQUEST} \ /(.*)\.html($|\) 
RewriteRule^/%1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.*)$ /$1.html [L] 
+0

Это не работает. Я тестирую в изолированном каталоге без каких-либо других мешающих файлов .htaccess. Ошибок нет, но переписать не происходит. Запрос на файл /new.html не переписывается в/new – rburk

+0

@rburk Я не учитывал '|' в круглых скобках в первом условии –

Смежные вопросы