#php #apache #.htaccess #mod-rewrite
#php #apache #.htaccess #mod-перезаписать
Вопрос:
В настоящее время я использую:
RewriteRule ^([^/.] )/?$ page.php?page=$1 [L]
Что хорошо при передаче одной строки запроса через.
Но есть ли способ просто передать все строки запроса через? т. Е. Запрос одной страницы может быть:
domain.com/contact?course=23
и другой может быть:
domain.com/contact?workshop=41
Итак, мне нужно знать, как называется строка запроса, но за раз будет передаваться только одна
Ответ №1:
Если я правильно понял ваш вопрос, вы можете просто добавить [QSA]
флаг (добавление строки запроса) в конец вашего RewriteRule
RewriteRule ^([^/.] )/?$ page.php?page=$1 [L,QSA]
Это обработает ваш запрос, как вы уже делали, и добавит любые дополнительные параметры строки запроса в конец.
Ответ №2:
Это то, что я делаю.
RewriteRule ^((/?[^/] ) /?)$ ?q=$1 [L]
Теперь вся часть после domain.com / находится в $_GET['q']
в index.php
. Например. если вы запрашиваете domain.com/articles/12
, q
содержит articles/12
. Затем тривиально разбирает его с помощью, например, explode('/', $_GET['q'])
.