我必须向现有网站的 .htaccess 文件添加一条规则,将一些旧图片 URL 重定向到新图片 URL。因此,在
RewriteEngine On
我添加了新规则:
RewriteRule ^images/photos/(.+) /media/projects/$1 [L]
本地和开发服务器上都很好。但是当我在实时网站上部署它时,它不起作用 :(...
我在本地使用 OpenSUSE,开发服务器在 Ubuntu Server 上,实时服务器是 FreeBSD。我运行了 phpinfo(),它显示实时服务器(共享主机)上有 mod_rewrite,所以我不知道问题可能出在哪里。尝试在 .htaccess 文件中添加一些“选项”,尝试在新规则末尾添加重定向标志……但没有任何变化。
所有其他规则都有效。当我破坏 .htaccess 文件中的某些内容时,它会显示“内部服务器错误”,如果我写入“拒绝所有人”,它会显示“禁止” - 这正是应该的。
你能帮助我吗?...提前谢谢 :)
在另一个论坛上得到了一些建议并尝试:
RewriteRule ^images/photos/(.+) /media/projects/$1 [L]
RewriteRule ^/images/photos/(.+) /media/projects/$1 [L]
RewriteRule ^/?images/photos/(.+) /media/projects/$1 [L]
但这些都不起作用:(......
答案1
好吧,经过一些实验后我明白了问题所在:) ...
该应用程序的结构如下:
/ - root
|- application
|- public
| |- css,images, etc ...
| \- .htaccess
\- .htaccess
因此,虚拟主机(本地和开发)指向“根”,而在实时站点上,域似乎指向“公共”文件夹。因此,当我将规则放在“公共” .htaccess 文件上时,它就可以在实时站点上运行。(令我困惑的是,当我破坏“根” .htaccess 文件时,实时站点会出现错误 500...这就是为什么我认为“根” .htaccess 文件是我应该使用的文件...)