各位!
我的URL如下所示:
/path/to/renderer/SPECIALKEY.jpg
我想把它们改写成:
/path/to/renderer/?ID=SPECIALKEY
问题是SPECIALKEY可能包含两个相邻的正斜杠,例如:
/path/to/renderer/HELLO/GOOD//BYE.jpg
在StackOverflow中的this answer之后,我修改了.htaccess以包含:
RewriteCond "%{REQUEST_URI}" "^/?path/to/renderer/(.+)\.jpg$"
RewriteRule "^.*$" "/path/to/renderer/?ID=%1" [PT,QSA]
但双斜线仍在“正常化”。
在/path/to/renderer/index.php
中,如果我输入:
echo $_SERVER[ 'REQUEST_URI' ] . "\n" . $_GET[ 'ID' ] . "\n";
那么对于/path/to/renderer/HELLO/GOOD//BYE.jpg
,我将得到:
/path/to/renderer/HELLO/GOOD//BYE.jpg
HELLO/GOOD/BYE
我必须在.htaccess中输入什么才能获得:
/path/to/renderer/HELLO/GOOD//BYE.jpg
HELLO/GOOD//BYE
(with在最后一行使用三个斜线而不是两个斜线)?
提前感谢!
1条答案
按热度按时间n7taea2i1#
所以从技术上讲,这并没有回答我的问题,因为似乎没有办法阻止Apache将两个斜杠“标准化”为一个斜杠。
每当真实的的SPECIALKEY包含
//
时,我就用/_
替换它。同样,如果第一个字符是/
,我就用_
替换它。我把结果放在URL中,而不是真正的SPECIALKEY。因为
_
从不出现在真实的SPECIALKEY中,所以当页面接收到修改后的密钥时,它会在将每个_
作为实际SPECIALKEY处理之前,将其替换为/
。