Apache重写条件忽略路径检查中的URL查询字符串

时间:2018-07-31 20:24:04

标签: apache mod-rewrite

我正在将WordPress网站从IIS迁移到Apache,并且在两台服务器测试文件是否存在的方式上遇到了不兼容性。

例如,假设该网站的图片位于/wp-content/image.jpg

原始HTML会使用附加了查询的绝对路径显示此图像-例如:<img src="https://fqdn/wp-content/image.jpg?id=123">

IIS URL重写规则不将https://fqdn/wp-content/image.jpg?id=123与无效路径匹配,因此URL不被重写。

但是,默认的Apache .htaccess规则确实将https://fqdn/wp-content/image.jpg?id=123与无效路径匹配,因此将执行重写。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

结果,带有查询字符串的所有静态内容都将重写为/index.php,因此https://fqdn/wp-content/image.jpg?id=123变成了https://fqdn/index.php?id=123

如何让Apache在没有URL的查询部分的情况下检查文件/目录是否存在?

0 个答案:

没有答案