如何在.htaccess中的正则表达式中添加可选的“param”

时间:2011-08-04 11:12:10

标签: php regex .htaccess

我在.htaccess文件中遵循了两条规则 -

1. RewriteRule ^myscript/([A-Za-z0-9]{0,1})\?page=([0-9]?)$ /myscript.php?action=check&var=$1&page=$2 [L]
2. RewriteRule ^myscript/([A-Za-z0-9]{0,1})$ /myscript.php?action=check&var=$1 [L]

以便visitng /myscript/d/myscript.php?action=check&var=d的形式发送请求 我正在尝试添加一个选项页面参数,以便visit / myscript / d?page = 5将请求发送为/myscript.php?action=check&var=d&page=5

实现这个我试过这个

RewriteRule ^myscript/([A-Za-z0-9]{0,1})\?page=([0-9]?)$ /myscript.php?action=check&var=$1&page=$2 [L]

但是这个规则被忽略,请求以/myscript.php?action=check&var=d发送(即上面的第二条规则正在应用)。我在这做错了什么?我需要做些什么改变才能让它发挥作用?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

仅使用第二条规则并添加QSA标志:

RewriteRule ^myscript/([A-Za-z0-9]{0,1})$ /myscript.php?action=check&var=$1 [QSA,L]

这会将现有查询参数传递给新网址:

/myscript/d?page=5&say=hello
=>
/myscript.php?action=check&var=d&page=5&say=hello

Apache文档: http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa