Htacess Rewrite Rule - не работает без косой черты - PullRequest
1 голос
/ 22 августа 2011

Итак, у меня есть следующие правила перезаписи:

RewriteRule ^([a-z0-9_\-]+)(\.php)?$ index.php?page=$1 [NC,L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?shop=$1&page=index [NC,L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z_-]+).php$ index.php?shop=$1&page=$2 [NC,L,QSA]

Кажется, все работает отлично, если я захожу на domain.com/shop/, то работает нормально и показывает индекс. Если я захожу на domain.com/shop/about.php, он отлично работает.

Единственное, что не работает, это когда я захожу на domain.com/shop без завершающего слеша, он не отображает ничего, я получаю кучу ошибок.

Кто-нибудь знает, как это исправить? Возможно, это что-то очень простое, чтобы добавить в мой код, но я не могу понять это.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 22 августа 2011

Во втором правиле добавьте ? после косой черты:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?shop=$1&page=index [NC,L,QSA]

Это сделает трейлинг / необязательным

2 голосов
/ 22 августа 2011

Я обычно заканчиваю свои правила с /?$, что означает строку, заканчивающуюся одним слешем или без символа.

...