Mod-Rewrite使用转义字符串代替

时间:2018-07-04 09:14:22

标签: apache .htaccess mod-rewrite url-rewriting vhosts

以下情况:

源URL的格式为: https://example.com/tmp/x%23.jpg

目标文件位于文件系统上的以下路径(相对于文档根目录)下:var/assets/tmp/x#.jpg

因此,我想使用以下规则将此路径重写为本地文件:
RewriteRule "^tmp/x#.jpg$" /var/assets/$0 [PT,L]

我还尝试了以下方法:
RewriteRule "^tmp/x#.jpg$" /var/assets/%{REQUEST_URI} [PT,L]

但是它们都导致404,并显示以下消息:
The requested URL /var/assets/tmp/x was not found on this server. 有趣的是,URL在x之后被截断,因此第一个特殊字符在哪里。

另一个有趣的事实是,以下条件匹配,但是规则失败:
RewriteCond %{DOCUMENT_ROOT}/var/assets%{REQUEST_URI} -f # matches RewriteRule ^(.*)$ /var/assets%{REQUEST_URI} [PT,L] # file not found

也许有些人知道我如何解决这个问题。
非常感谢!

0 个答案:

没有答案