Использование перезаписи для разных папок - PullRequest
4 голосов
/ 17 октября 2011

В настоящее время у меня есть все мои php-файлы в корневой папке, и я использую это правило перезаписи, которое прекрасно работает:

ErrorDocument 404 /broken.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(index(\.(html|htm)))?$
RewriteRule %{REQUEST_URI} / [L,R,QSA]
RewriteCond %{REQUEST_URI} !^/(index(\.(html|htm)))?$
RewriteRule ^([_a-zA-Z0-9]+)/?$ /$1.php [L,QSA]

В настоящее время я планирую изменить его, чтобы можно было переписать строки запроса, например contact/ test / yes становится contact.php? test = yes

У меня такой вопрос: если у меня есть подпапка, в которую мне нужно переписать (например, root / subfolder1);как переписать правило в этой подпапке1, чтобы что-то вроде contact/test/yes не интерпретировалось как файл yes, находящийся внутри тестовой папки, которая находится внутри папки контактов?

Спасибо за всю предыдущую помощь.

1 Ответ

17 голосов
/ 18 октября 2011

вы можете создать каждый случай или иметь динамическое

примечание: если папка существует, и вам нужно добавить это:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

, если вы создаете каждый случай, вам нужно будет указатькаждая подпапка, например:

RewriteRule ^contact/test/([_a-zA-Z0-9]+)/?$ /contact.php?test=$1 [L,QSA]

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

RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/([_a-zA-Z0-9]+)/?$ /index.php?page=$1&subpage=$2&lastpage=$3 [L,QSA]
...