Кажется, каждые несколько недель я должен задать еще несколько вопросов .htaccess для переписывания/перенаправления. Каждый раз, когда я думаю, что понимаю, в мой проект бросается другой ключ, который показывает, что я этого не делаю.Комплекс (?) Htaccess переписывание/перенаправление
EDIT: Мой первоначальный вопрос был не очень ясен, поэтому следующая попытка быть более кратким.
Как все это, все файлы .html живут в корневом каталоге. например: http://example.com/about.html
Там нет никаких подкаталогов, за исключением нормальных, как IMG, CSS и т.д.
Для целей отслеживания, если кто-то типы в http://example.com/random/
, где «случайный» может быть любая строка Я хочу, чтобы они увидели файл index.html
, не изменяя URL. Каталог «random» вообще не существует на сервере.
То же самое касается других страниц, таких как about.html
. Если кто-то напечатает в http://example.com/random/about.html
, я бы хотел, чтобы они увидели страницу about.html
.
В то же время, я хотел бы http://example.com/random/about
или http://example.com/about
(отсутствует расширение файла), чтобы также показать о странице.
Однако, если кто-то напечатал страницу, которая не существует, я хотел бы, чтобы это использовать пример ErrorDocument
: У меня нет файла с именем «pickups.html», так что следующее бы все ошибки 404:
http://example.com/pickups.html
http://example.com/pickups
http://example.com/random/pickups.html
http://example.com/random/pickups
было бы неплохо, если бы конец перенаправлять/переписывание было иметь расширение файла отгоняют (потому что он выглядит лучше).
Мои мысли, что любой запрос, заканчивающийся /
, будет просто служить в файле index.html, который существует в корне сайта. Таким образом, это оставляет файлы.
Мой мыслительный процесс:
- полоса расширение файла от запроса
- проверки, существует ли файл с расширением в корневом каталоге сайта
- если да, показывать эту страницу.
- если нет, 404.
Мой исходный код (имел справку о нем) был таков:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.*)$ /$2 [R=301,L]
Я понимаю, что в этом коде я захватывая все после последнего слеша и сервировки это из корня документа. К сожалению, он не учитывает файлы, которые не существуют.
Тестирование может быть легко сделано с помощью локальной установки Apache. Добавьте PHP, чтобы посмотреть на среду, но большую часть времени достаточно простого Apache. –
Изучив это, я должен признать, что я даже не понимаю, чего вы хотите. Я предлагаю разбить его на более мелкие кусочки и решить вашу проблему шаг за шагом. –
У меня есть локальная установка Apache - или XAMPP. Что вы подразумеваете под простым Apache? Прошу прощения, если я не проясняю. Что-нибудь конкретное, что вы повесили трубку, я могу пролить свет? – gin93r