2012-08-15 32 views
0

我有folllowing .htaccess文件重定向所有完整图像在所选路径随着查询语句

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
RewriteRule ^css/.*$ - [PT] 
RewriteRule ^flash/.*$ - [PT] 
RewriteRule ^images/user-images/(.*)$ /index.php?image=$1 [QSA] 
RewriteRule ^inc/.*$ - [PT] 
RewriteRule ^js/.*$ - [PT] 
RewriteRule ^swf/.*$ - [PT] 

我需要调整的线路之一,接受并保持查询变量

RewriteRule ^images/user-images/(.*)$ /index.php?image=$1 [QSA] 

这个例子的url看起来是这样的:

http://domain.com/images/user-images/Montreal/private/2012_08_10/YzAbCdE.jpg?lang=fr 

lang变量总是被剥夺怎么做我仍然得到上述网址工作,并重定向到http://domain.com/images/user-images/Montreal/private/2012_08_10/YzAbCdE.jpg不失LANG = FR

感谢您的帮助:)

回答

1

如果我正确理解你想要的

http://domain.com/images/user-images/path/YzAbCdE.jpg?lang=fr 

映射到

/index.php?image=path%2FYzAbCdE.jpg&lang=fr 

这将是exaclty你的重写规则:

RewriteRule ^images/user-images/(.*)$ /index.php?image=$1 [QSA] 

应该做的。尤其是[QSA]应该保留lang参数,如果你想要去掉lang参数,你需要[QSD]而不是[QSA]。

如果这不起作用,这可能是因为你的Apache服务器太旧,不知道QSA。

Howevery,你可以尝试以取代上述重写规则:

RewriteRule ^images/user-images/([^?]*)$ /index.php?image=$1 
RewriteRule ^images/user-images/([^?]*)?(.*)$ /index.php?image=$1&$2 
+0

不能匹配一个'RewriteRule'查询字符串,你需要匹配对'%{QUERY_STRING}' var在'RewriteCond'中。无论哪种方式,OP的规则对我来说工作得很好。 – 2012-08-15 18:20:01

相关问题