.htaccess采用文件系统路径

时间:2012-07-23 13:20:11

标签: .htaccess

我正试图让一条足够简单的规则起作用:

Input URL: http://example.com/css/styles.css/t=123456
Expected output: http://example.com/css/styles.css

t=123456表示文件的修改时间,该时间自动添加到服务器端。目前,它是一个查询字符串,但显然在某些情况下不能正确缓存,所以我想在url中对其进行编码。

我尝试的规则很简单:

RewriteRule (.*)/t=[0-9]+ $1

但出于某种原因,我一直收到404 Not Found错误。

我添加了[R=301]以查看重写的位置,出于某种原因,我发现这是输出网址:

http://example.com/home/evilzoro/public_html/css/styles.css

因此,虽然它正确地剥离了参数,但它正在添加整个文件系统路径!

奇怪的是,其他类似的规则也可以正常使用,例如:

RewriteCond %{REQUEST_FILENAME} !\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [QSA]

那么我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试向规则的目标添加前导斜杠。 Apache必须猜测你是指文件路径还是URI路径,有时它不能正确。

RewriteRule (.*)/t=[0-9]+ /$1