Назад | Перейти на главную страницу

Передача необязательных переменных запроса через .htaccess

Ох, .htaccess болит по голове.

Итак, у меня есть веб-страница с красивым URL-адресом foo.com/radio/jobs хотя на самом деле живет по адресу foo.com/content/directory_jobs.php/?section=radio

Я добиваюсь этого, используя строку .htaccess ...

RewriteRule ^(radio|tv|magazines|newspapers)/jobs$ /content/directory_jobs.php?section=$1

На этой же странице есть необязательная строка запроса? Pages =, поэтому вы можете перейти к foo.com/radio/jobs?page=2 и смотрите вторую страницу.

Однако приведенная выше строка .htaccess не добавляет эту переменную pages: в результате базовый сценарий PHP не видит переменную "pages".

Могу ли я настроить указанную выше строку .htaccess, чтобы убедиться, что я действительно передаю переменную 'pages', если она существует? Или мне нужно иметь две строки .htaccess для каждой такой страницы?

Просто добавьте флаг QSA (добавление строки запроса)

RewriteRule ^(radio|tv|magazines|newspapers)/jobs$ /content/directory_jobs.php?section=$1 [QSA]

Пример;
С флагом QSA / radio / jobs -> /content/directory_jobs.php?section=jobs
/ radio / jobs? foo = bar -> /content/directory_jobs.php?section=jobs&foo=bar
/ radio / jobs? foo = bar & boo = bosh -> /content/directory_jobs.php?section=jobs&foo=bar&boo=bosh
mod_rewrite выяснит, нужно ли добавить? или $ so для правила перезаписи

RewriteRule ^ ([a-z] +) $ /$1.php [QSA]

/ что-то? foo = bar -> /something.php?foo=bar