htaccess не работает в двух почти идентичных случаях - PullRequest
0 голосов
/ 03 марта 2012

Это правило перезаписи не работает (после перенаправления идентификатор пуст):

RewriteRule ^album/([0-9]+)$ album.php?id=$1 [L,QSA]

в то время как этот делает:

RewriteRule ^album([0-9]+)$ album.php?id=$1 [L,QSA]

Единственная разница - удаленная косая черта.

Ответы [ 2 ]

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

Это связано с многовидом. Multiviews обходит ваши правила переписывания, потому что он соответствует /album/... существующему файлу album.php

Вы можете предотвратить это, добавив Options -MultiViews в свой htaccess.

0 голосов
/ 03 марта 2012

Это связано со способом обработки правил mod_rewrite в файлах .htaccess. По сути, входные данные для RewriteRule будут только «файловой» частью пути, поэтому, когда URL равен .../album/42, RewriteRule будет совпадать с 42.

Решением является использование RewriteCondition. Что-то вроде:

RewriteCond %{REQUEST_URI} (.*)/album/([0-9]+)$
RewriteRule ^ %1/album.php?id=%2 [L,QSA]
...