0

我想匹配 htaccess 上的变量...这是我的 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。谁能帮我

4

2 回答 2

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

请注意,您在正则表达式中有四个(.*)捕获组,三个然后一个([^/]*),您只使用前三个,而忽略第四个。但是,如果您说这很好用,那么我想这就是您想要的。

于 2013-07-13T20:11:16.950 回答
0

$4应该在应该使用变量时使用变量,$5因为在您的 URL 中您正在搜索5start=(.*)第 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]
于 2013-07-13T20:14:40.480 回答