htaccess - 重定向的可选url参数

时间:2012-09-21 05:54:34

标签: .htaccess url-rewriting

我的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?

1 个答案:

答案 0 :(得分:1)

您无法与?中的查询字符串(RewriteRule之后的所有内容)匹配,您需要与%{QUERY_STRING}中的RewriteCond匹配并使用%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