mod_rewrite, где правило перезаписи соответствует каталогу - PullRequest
0 голосов
/ 06 мая 2011

У меня есть правило mod_rewrite, подобное этому:

RewriteRule ^(alice)/?$ bob.php?page=$1 [L]

Если я перейду к http://localhost/alice/,, он читает bob.php (как и ожидалось).Если я перейду к http://localhost/alice (без косой черты), он прочитает bob.php (снова, как и ожидалось).

Если я создам каталог в htdocs под названием «Алиса» и перейду к1010 *http://localhost/alice/, читает bob.php.Но, если я перейду к http://localhost/alice,, он теперь перенаправляется на http://localhost/alice/?page=alice. Он по-прежнему читает bob.php (что я и хочу), но я бы предпочел, чтобы он не изменял URL-адрес подобным образом..

Почему он это делает, и есть ли какой-нибудь способ предотвратить это (кроме того, чтобы просто не лгать о таких каталогах)?

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

Кажется, это вызвано /?в конце - удаление?вызывает (когда каталог alice существует):

  • / alice перенаправляется в / alice / и отображается как /bob.php?page=alice
  • / alice / для отображенияas /bob.php?page=alice

Если каталог alice не существует, / alice не будет перенаправлен (но будет / alice /).Если вы знаете, существует каталог или нет, вы можете выбрать, следует ли использовать / или /?.

0 голосов
/ 06 мая 2011
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(alice)/?$ bob.php?page=$1 [L]
...