не удается найти ошибку в обратной ссылке на modrewrite - PullRequest
0 голосов
/ 27 декабря 2011

Я хочу отображать содержимое в виде (не существует) подпапок. Все эти строки подпапок должны быть отправлены в file.php и прикреплены как переменная: «n».

Мой PHP-скрипт уже работает нормально. (Если я присоединяю переменные в адресной строке, файл file.php отображает все, что должен отображаться.) Но, похоже, в моих определениях .htaccess есть, по крайней мере, одна ошибка, которую я не могу найти уже несколько дней. (Все страницы по-прежнему доступны, но по какой-то причине я не могу получить доступ к file.php, если наберу какую-либо строку (только с разрешенными символами) в качестве подпапки. (Все реальные файлы должны оставаться доступными, потому что они являются реальными документами или подпапки, которые должны быть исключены из правила перезаписи через условия в моем файле .htaccess.)

Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9_-]+)/?$ file.php?n=$1 [QSA,NC,L]

Может ли кто-нибудь дать мне подсказку, почему мои определения не соответствуют тому, что я от них хочу?

1 Ответ

1 голос
/ 27 декабря 2011

Для первого уровня это работает просто отлично. Поэтому, если «foo /» не работает для вас, я думаю, что ваш файл .htaccess не анализируется должным образом.

Если его «нижние уровни» не работают («foo / bar /» и т. Д.), Что является вашей проблемой, используйте вместо этого этот rewriterule:

RewriteRule ^((([a-z0-9_-]+)/?)*)$ file.php?n=$1 [QSA,NC,L]

Это будет соответствовать любому уровню вложенности и даст вам весь путь. (Только для последнего подкаталога используйте $ 2 или $ 3 вместо $ 1.)

...