.htaccess 文件的新规则在实际网站上不起作用

.htaccess 文件的新规则在实际网站上不起作用

我必须向现有网站的 .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 文件是我应该使用的文件...)

相关内容