使用查询语句完整重定向选定路径下的所有图像

时间:2012-08-15 17:32:27

标签: apache .htaccess

我有以下.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]

示例网址如下所示:

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

lang变量总是被剥离我如何仍然使上面的url工作并重定向到http://domain.com/images/user-images/Montreal/private/2012_08_10/YzAbCdE.jpg而不会丢失lang = fr

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

如果我理解你想要

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

要映射到

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

这可能是你的重写规则:

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

应该这样做。特别是[QSA]应该保留lang参数,如果你想删除lang参数,你需要[QSD]而不是[QSA]。

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

但是,您可以尝试通过以下方式替换上述重写规则:

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