这是将单个重写规则应用于多个页面的正确方法吗?

时间:2012-05-29 20:06:19

标签: .htaccess

我正在尝试使用.htaccess,但此时我有点失落。我想知道你会怎么做 重写多个页面。

RewriteRule ^your-order/$ /page1.php,page2.php,page3.php [L]

或者我应该这样做:

RewriteRule ^your-order/$ /page1.php [L]
RewriteRule ^your-order/$ /page2.php [L]
RewriteRule ^your-order/$ /page3.php [L]

我也想知道如果页面有参数,重写器是否仍会执行:

 URL: page1.php?test=hello


RewriteRule ^your-order/$ /page1.php [L]

1 个答案:

答案 0 :(得分:1)

我假设你的问题是关于查询字符串参数,你实际上有向后重写的概念。第一个表达式是提交的URL(pageN.php),第二个表达式应该被重定向或重写(您的订单)。在这种情况下,您只需要一条规则。

除非您需要采取特殊操作(如果存在查询字符串参数(例如完全转到其他页面),否则您不需要匹配查询字符串。查询字符串在单独的RewriteCond条件中匹配,而不是在RewriteRule

中匹配
RewriteEngine On
# Rewrite page1, page2, page3 to your-order
# Add as many other pages as necessary separated by |
# The QSA appends any additional querystring to your-order
RewriteRule ^(page1|page2|page3)\.php your-order [L,QSA]

如果您的网页实际上以最后的数字命名(我怀疑),您可以改用此表达式:

RewriteRule ^page[0-9]+\.php your-order [L,QSA]

在任何一种情况下,如果您希望将最终用户的浏览器重定向到您的订单网址,而不是内部和不可见的重写,请将[L,QSA]更改为[L,R,QSA]