0

我试图得到一个足够简单的规则来工作:

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]以查看重写的去向,出于某种原因,我发现这是输出 URL:

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]

那么我做错了什么?

4

1 回答 1

1

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

RewriteRule (.*)/t=[0-9]+ /$1
于 2012-07-23T15:41:18.913 回答