通过.htaccess重定向查询字符串

wn9m85ua  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(137)

我尝试通过.htaccess文件重定向用户以创建友好的URL示例:
用户界面URL:https://example.com/courses/1
htaccess角色

RewriteEngine On 
RewriteRule ^courses/([0-9]{1})$ /courses.php?page=$1

输出URL:https://example.com/courses.php?page=1
一切正常,现在我需要向URL添加其他查询参数,例如http://smart-courses.com/courses/1?p1=1&p2=2,因此,我需要htaccess将我重定向到https://example.com/courses.php?page=1&p1=1&p2=2
我尝试创建一个新角色来检查p1p2是否存在并重写URL

RewriteRule ^courses/([0-9]{1,5})?lid=([0-9]{1,})&did=([0-9]{1,})$ /courses.php?page=$1&p1=$2&p1=$3

此外,我尝试在([0-9]{1,5})(页码)之后添加任何字符,并将其放在?page=1之后,但没有成功

RewriteRule ^courses/([0-9]{1})\?(.*)$ /courses.php?page=$1&$2
wsxa1bj1

wsxa1bj11#

查询字符串不是规则模式匹配的URL的路径部分的一部分。如果你必须从查询字符串中捕获一些东西,你需要使用ReuestCond,这是有文档记录的。但是在这种情况下,你甚至不需要捕获任何东西:

RewriteEngine On 
RewriteRule ^/?courses/(\d)$ /courses.php?page=$1 [QSA]

QSA标志将潜在的查询字符串添加到(重写的)目标URL中。重写模块会注意在此处使用正确的串联(&字符)。同样,此行为已记录在案:https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
你自己看看:htaccess.madewithlove.com

相关问题