mod_rewrite делает индекс неправильно - PullRequest
0 голосов
/ 14 марта 2012

У меня есть следующие директивы mod_rewrite в файле .htaccess, так что URL-адреса, такие как http://example.com/foo/bar/baz, внутренне переписываются в index.php? Page = baz

RewriteEngine     on
RewriteBase       /foo/bar/
RewriteRule       ^index.php          - [L,NC]
RewriteRule      ^([^/]*)/?$          index.php?&p=$1  [L,QSA]
RewriteRule      ^([^/]*)/([^/]*)/?$  index.php?&p=$1&v=$2  [L,QSA]

Отлично работает на

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

Я включил RewriteLogLevel до 9,и я получаю записи, подобные этой, когда захожу на http://example.com/foo/bar/index/baz

[perdir ..../foo/bar/] add path info postfix: ..../foo/bar/index.php -> ..../foo/bar/index.php/baz

Так что, похоже, что-то внутреннее для apache фактически переписывает / index / часть URL в /index.php/ до того, как mod_rewriteвидит это, что является небольшой проблемой.Он не переписывает что-либо еще неправильно, просто индекс.

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

Это Apache 2.2.21 и PHP 5.3.8.


Надеюсь, я нахожусьясно, но на всякий случай я хочу, чтобы URL переписывались так:

  • / foo / bar / index -> /foo/bar/index.php?page=index
  • / foo / bar / index / -> /foo/bar/index.php?page=index
  • / foo / bar / page1 -> /foo/bar/index.php?page=page1
  • / foo / bar / page2 / word -> /foo/bar/index.php?page=page2&v=word

Все работает нормально, за исключением URL-адресов с индексом.

1 Ответ

1 голос
/ 16 марта 2012

Попробуйте добавить Options -MultiViews к вашему htaccess, чтобы предотвратить конфликт с index.php

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