哦,.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