我一直在研究并尝试一切我能得到的东西,但这种陌生感仍然存在。
我有一个可以理解的奇怪重写场景,其中调用了一个执行图像大小调整和缓存的 php 脚本,而没有其 .php 扩展名来创建 SEF url,奇怪的是我正在传递所有“参数”,就好像它们是脚本的子目录,在这种情况下我的重写失败,即:
http://10.3.2.218/libraries/imageresize/images/portfolio/200/test.jpg
在上面的 url 中,“imageresize”实际上是“imageresize.php”,之后的所有内容都由我的脚本使用 $_SERVER['REQUEST_URI'] 捕获并处理为图像位置和尺寸。脚本的输出是具有所需内容类型等的已处理图像。
确切的问题是我的重写规则在正常条件下运行良好,并且它们在我的客户端所在的 1and1 上运行良好(在上述情况下),但在我的开发 centos webserver/vm 或带有 cpanel 的 VPS 上运行良好。似乎除了 1and1 apache 之外的任何地方都可能假设 /imageresize/ 是一个目录,并且从不测试它是否是一个脚本。我的重写规则如下。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) $1.php [L]
我想我要么正在寻找与服务器配置相关的解决方案,要么正在寻找更好的重写规则的帮助,或者至少解释为什么某些东西实际上在 1and1 有效。
谢谢你的帮助。