Как скрыть .html расширение с Apache mod_rewrite

У меня есть небольшое количество статических сайтов, где я просто хочу скрыть .html расширение:

  • URL /foo выбирает статический файл /foo.html
  • браузер все еще отображает URL /foo

Клиент может тогда отослать закладки в стиле mydomain.com/foo вместо mydomain.com/foo.html.

Это звучит очень простым, и я использовал mod_rewrite счастливо прежде (говорят с WordPress или для перенаправлений), но это оказывается намного более твердым взломать это, я думал. Возможно, я пропускаю что-то действительно очевидное, но я не могу найти решение нигде, и я был во всем этом днем!

Мы выполняем наш собственный сервер, таким образом, это может пойти везде, где лучшее место.

Приложение

Решение, проверенное ниже хорошо работавшего. Тогда после выполнения сайта некоторое время я заметил две проблемы:

  1. все страницы начали казаться нестилизованными. Я перезагрузил, очистил кэш, и т.д., но все еще без стилей. Я испытал эти затруднения прежде и не могу определить местоположение источника.

  2. Существует каталог И файл HTML, названный 'галереей', таким образом, / ссылка галереи показывает список каталогов вместо файла HTML. Я должен быть в состоянии отсортировать тот, но дальнейшие подсказки приветствуют:-),

43
задан Dave Everitt 3 January 2010 в 17:45
поделиться

2 ответа

Попробуйте это правило:

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

При добавлении .html будут перезаписаны все запросы, которые могут быть привязаны к существующему файлу.

.
50
ответ дан 26 November 2019 в 22:40
поделиться

Вот пример, который позволяет нам хранить файл на диске как:

foo.html.php

Но в браузере, обратитесь к нему как к

foo.html

Чтобы это работало для вас, я думаю, вам просто нужно будет немного изменить его, чтобы он соответствовал вашим существующим запросам, и проверить на месте ли реальный файл с помощью . расширение html.

 # These are so we do not need the .php extension
 RewriteCond %{REQUEST_FILENAME} (\.xul|\.html|\.xhtml|\.xml)$',
 RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f',
 RewriteRule ^(.*)$ $1.php',
1
ответ дан 26 November 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: