Mod_rewrite, 301 и косые черты - PullRequest
       14

Mod_rewrite, 301 и косые черты

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

Я хочу создать симпатичный URL для виртуального каталога.Но я также хочу защитную сеть для виртуального каталога на случай, если кто-нибудь попадет туда напрямую.Давайте назовем виртуальный каталог foo

RewriteRule ^foo/(.*)$ ./foo/page.php?term=$1 [QSA]

Кажется, это работает нормально.Все страницы перенаправляются и отображаются правильно, и красивый адрес остается в адресной строке (а не перенаправляет на физический адрес, как с 301)

Но если я пойду на www.domain.com/ foo я получаю 404: (

Если я перехожу на www.domain.com/foo/ (обратите внимание на косую черту), тогда сценарий продолжается и отображается сообщение об ошибке благодаря дополнительной проверке в моем PHP.

Как привести в порядок виртуальный каталог (с / без косой черты)? Никто никогда не должен ударить это, но если они захотят, я хочу быть готовым и перенаправить их на домашнюю страницу.

Прочитав вопрос другого пользователя Я попробовал:

Redirect 301 /foo /?q=empty

Но это противоречит моему первоначальному правилу. Я заканчиваю ссылками вроде: www.domain.com/?q = пусто / Blah (вместо / foo / Blah)

Ответы [ 2 ]

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

Просто добавьте дополнительное правило для этого случая

RewriteRule ^foo/?$ ./foo/page.php [QSA, L]
0 голосов
/ 06 февраля 2012

Попробуйте это:

RewriteCond %{REQUEST_URI} ^foo/$ 
RewriteRule ^  /foo/page.php?q=empty [L,QSA]

RewriteRule ^foo/(.*)$ foo/page.php?term=$1 [L,QSA]
...