1

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

我还想知道如果页面有参数,rewriterule 是否仍会执行:

 URL: page1.php?test=hello


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

1 回答 1

1

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

除非您需要在存在查询字符串参数时采取特殊操作(例如完全转到不同的页面),否则您不需要匹配查询字符串。查询字符串在单独的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]

于 2012-05-29T20:11:51.950 回答