Что будет rewriterule для перенаправления, когда запрос не является допустимым каталогом - PullRequest
0 голосов
/ 20 февраля 2012

Я хочу написать rewriterule в файле .htaccess, чтобы перенаправить все запросы, в которых не указано допустимое имя каталога.

например, если у меня есть 1 папка test и 1 файл index.php в корневом каталоге моего сайта.Мое требование состоит в том, что все запросы, которые запрашивают страницу в папке или подпапках test , не будут перезаписываться mod_rewrite, а все другие запросы, которые не начинаются с test, будут переписаны в index.php .

PS номера папок и их имена меняются очень часто, поэтому я искал универсальный rewriterule, который будет проверять правильные имена каталогов.

Что будет перезаписано для вышеслучай

1 Ответ

0 голосов
/ 20 февраля 2012

Сделайте это в yout .htaccess из DocumentRoot

RewriteEngine on
RewriteBase /

Rewritecond %{REQUEST_FILENAME} !-f
Rewritecond %{REQUEST_FILENAME} !-d
Rewritecond %{REQUEST_FILENAME} !-l
RewriteRule  ^ index.php [L]

С перезаписать apache docs : -f, -d & -l являются вариантами CondPatterns.Вместо реальных строк регулярного выражения.

  • '- d' (is directory) Обрабатывает TestString как путь и проверяет, существует ли он или нет, и является каталогом.
  • '- f' (это обычный файл) Обрабатывает TestString как имя пути и проверяет, существует ли он или нет, и является ли он обычным файлом.
  • '- l' (является символической ссылкой) Обрабатывает TestString какимя пути и проверяет, существует ли он или нет, и является символической ссылкой.

, если перед ним стоит восклицательный знак ('!'), это приводит к отрицанию их значения.то есть !-f означает, что это не обычный файл.

...