我有以下.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
感谢您的帮助:)
答案 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