.htaccess переписать передать все строки запроса через

#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']) .