我正在尝试使用.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]
答案 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]