2013-07-13 93 views
0

我想匹配varriables上htaccess的...这是我的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 varriable问题。 htaccess不匹配start可变。任何人都可以帮我

回答

0

您正在使用$4变量应该是$5,因为在您的URL中搜索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] 
+0

比你我很多亲爱的:D :)) –

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 

注意,您必须捕获组在正则表达式,三(.*)然后一个([^/]*),和您只使用前三个,和ignoreing第四个。但如果你说这工作正常,那么我想这就是你想要的。