我想在htaccess上匹配varriables ...这是我的htaccess文件:
RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)/([^/]*).mp4$ str.php?vid=$1&auth=$2&hash=$3
RewriteCond ^(.*)/(.*)/(.*)/([^/]*).mp4?start=(.*)$ str.php?vid=$1&auth=$2&hash=$3&start=$4
RewriteRule ^(.*)/(.*)/(.*)/([^/]*).flv$ str.php?vid=$1&auth=$2&hash=$3
RewriteCond ^(.*)/(.*)/(.*)/([^/]*).flv?start=(.*)$ str.php?vid=$1&auth=$2&hash=$3&start=$4
一切正常,但start
变量存在问题。 htaccess与start
变量不匹配。任何人都可以帮助我
答案 0 :(得分:0)
不确定为什么在规则之后你有重写条件,因为你拥有的东西永远不会匹配。此外,您需要匹配%{QUERY_STRING}
变量:
RewriteCond %{QUERY_STRING} ^(?:start=([^&]+)|)
RewriteRule ^(.*)/(.*)/(.*)/([^/]*).mp4$ str.php?vid=$1&auth=$2&hash=$3&start=%1
RewriteCond %{QUERY_STRING} ^(?:start=([^&]+)|)
RewriteRule ^(.*)/(.*)/(.*)/([^/]*).flv$ str.php?vid=$1&auth=$2&hash=$3&start=%1
请注意,您在正则表达式中有四个捕获组,三个(.*)
然后一个([^/]*)
,并且您只使用前三个,而忽略第四个。但如果你说那个工作正常,那么我想这就是你想要的。
答案 1 :(得分:0)
您使用的$4
变量应为$5
,因为您在网址中搜索的5
匹配start=(.*)
是第5个。
但是,请尝试使用这两行而不是4行。使用QSA
标志,如果查询字符串包含在URL中,它会将查询字符串附加到结尾。
RewriteRule ^(.*)/(.*)/(.*)/([^/]*).mp4$ str.php?vid=$1&auth=$2&hash=$3 [QSA,L]
RewriteRule ^(.*)/(.*)/(.*)/([^/]*).flv$ str.php?vid=$1&auth=$2&hash=$3 [QSA,L]