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



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

我从您关于查询字符串参数的问题中假设您实际上具有向后重写的概念。 第一个表达式是提交的 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]

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

相关内容

最新更新