Ох, .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