我有一台运行 Apache2 的 Ubuntu 10.04 服务器,上面托管着我的几个网站。它们大多数都是某种 CMS,所以通常不会造成问题。
但是我最近将我的一个页面上传到服务器,似乎无法加载 URL example.com/admin。我无论如何也想不出这个原因。
需要澄清的是,这种情况仅发生在 /admin 上。所有其他控制器(使用 MVC 模式)均可正常加载。
某处是否存在某种隐藏的配置?
我也在使用 .htaccess,但是它没有在 Linux 机器上导致这种行为的规则,但在 Win 机器上不会发生这种行为。
错误日志显示:
[2012 年 4 月 16 日星期一 23:33:23] [错误] [客户端 78.xxx] 文件不存在:/srv/www/example.com/public_html/admin
我完全不知所措。Apache2 设置中也没有任何会导致这种情况的因素。帮忙?
答案1
该修补程序是 mod_rewrite。
RewriteEngine 开启
重写规则 admin$ /admin/ [R=301,L]
--
或者安装/启用mod_dir Default: DirectorySlash On
--
注意:在<Directory "/var/www/html/">
尾随 VS 中,没有尾随斜杠也会有所不同。
答案2
事实证明,我的问题与 Apache 有关。
在寻找解决方案时,我意识到我的开发机器和服务器上的虚拟主机没有指向同一个 DocumentRoot,这意味着,虽然我提供了一个额外的 .htaccess 文件来将请求重定向到正确的目录,但两个环境并没有使用相同的设置。
简而言之,确保你对两个环境使用相同的设置。或者更好的是,复制你的开发和生产环境。