我正在将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的查询部分的情况下检查文件/目录是否存在?