0

我在我的 htaccess 文件中有一个 url 的重定向,它的工作原理就像它应该的那样:

RewriteRule (.*)/(.*)\.html$ view.php?mode=$1&id=$2 [nc]

但是,当我修改该行以尝试使用?start=1下面的行检查启动参数 ( ) 是否存在时,我得到一个 404。

RewriteRule (.*)/(.*)\.html(\?start=[0-9]+)$ view.php?mode=$1&id=$2&start=$5 [nc]

我应该如何编写它来获取可选start参数并将其添加到 URI?

4

1 回答 1

1

您无法匹配 a 中的查询字符串(之后的所有内容?RewriteRule,您需要匹配 a 中的%{QUERY_STRING}aRewriteCond并使用%N反向引用分组:

RewriteCond %{QUERY_STRING} ^start=([0-9]+)
RewriteRule (.*)/(.*)\.html$ view.php?mode=$1&id=$2&start=%1 [nc]

但是,您不需要这样做。要附加现有的查询字符串,只需使用QSA flag

RewriteRule (.*)/(.*)\.html$ view.php?mode=$1&id=$2 [nc,QSA]

如果 URI 是/something/file.html?start=100,它将被重写为/view.php?mode=something&id=file&start=100

于 2012-09-21T06:14:23.163 回答