2013-07-13 122 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第四個。但如果你說這工作正常,那麼我想這就是你想要的。