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