htaccess RewriteRule хранит строку запроса - PullRequest
6 голосов
/ 09 декабря 2011

У меня есть RewriteRule, например:

RewriteRule ^thesection$ /sections.php [L]
RewriteRule ^thesection/(.*)$ /sections.php?show=$1 [L]

, поэтому, если я введу domain.com/thesection ->, он прекрасно работает

, но !, если я введу domain.com/thesection/helloперенаправляет на domain.com/thesection?show=hello

Я не знаю, что я делаю неправильно, и я часами гуглял.Пожалуйста, помогите!

Заранее спасибо

1 Ответ

9 голосов
/ 09 декабря 2011

Попробуйте и дайте мне знать

RewriteEngine On
RewriteRule ^thesection/?$ /sections.php [L,QSA]
RewriteRule ^thesection/([a-z0-9\-_]+)/?$ /sections.php?show=$1 [L,QSA]

это перенаправит domain.com/thesection/hello на sections.php?show=hello

флаг QSA означает:

Этот флаг заставляет механизм переписывания добавлять часть строки запроса строка подстановки в существующую строку вместо замены Это. Используйте это, если вы хотите добавить больше данных в строку запроса через переписать правило.

, так что вы можете добавить больше параметров, например: http://www.domain.com/thesection/hello/?page=1 это выдаст:

Array (
 [show] => hello
 [page] => 1
)
...