Перенаправление .htaccess, если файл не существует - PullRequest
6 голосов
/ 20 марта 2009

Так вот что я пытаюсь сделать. У меня есть простая структура, и я использую мод переписать, чтобы переписать URL-адреса, чтобы они указывали на правильные файлы. У меня есть папка процесса, которая находится внутри веб-папки (в веб-папке находятся все фактические файлы веб-сайта, такие как изображения, CSS и т. Д.).

Это прекрасно работает, но сейчас я пытаюсь создать файл default.php для обработки форм. Файл отлично работает, если я указываю на него форму, но я хочу иметь возможность указать форму на нужный файл, а если файла нет, то он использует default.php

Формы создаются классом, и действие настроено на обработку / {ID OF FORM} .php Идея состоит в том, что любой может создать форму, используя класс, и если ему не нужно ничего делать специальный файл default.php будет обрабатывать форму.

Я понимаю, что могу просто установить класс формы, чтобы он всегда использовал default.php, а затем в файле default.php я могу проверить, выходит ли нужный файл. Если это так, то используйте этот файл, если он не будет продолжать обрабатывать форму, но мне все еще любопытно узнать, сработает ли что-то подобное при перезаписи мода:

RewriteRule ^process/([^/]*) /web/process/$1
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-f
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-d
RewriteRule ^process/([^/]*) /web/process/default.php [L]

Ответы [ 2 ]

14 голосов
/ 20 марта 2009

Только это правило должно сделать это:

RewriteCond %{DOCUMENT_ROOT}web/$0 !-f
RewriteRule ^process/[^/]+$ web/process/default.php [L]

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

2 голосов
/ 20 марта 2009

Обычно вы должны иметь вызовы RewriteCond до вашего RewriteRule. Правило срабатывает, если встречаются Conds.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...