通过 .htaccess 传递可选查询变量

通过 .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 行?

答案1

只需添加 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

重写规则 ^([az]+)$ /$1.php [QSA]

/某物?foo=bar->/某物.php?foo=bar

相关内容