1

我正在尝试部署的站点遇到问题。该站点在我的开发主机上运行良好,但部署失败。两台主机的配置非常相似,都是 Ubuntu Linux 发行版(开发:11.10,部署:10.04),都使用 apache2 等。

两个站点都启用了 mod_dir,但部署站点似乎没有将斜杠添加到目录名称,而开发站点则这样做。因此,当我输入此 URL 时(删除 http 以避免愚蠢的 stackoverflow 反垃圾邮件过滤):

devel.mydomain.com/admin

开发主机将其重定向到:

devel.mydomain.com/admin/

http://mydomain.com/admin由于未知原因,在部署中未重定向到 mydomain.com/admin/,并且我以 404 错误结束。当然,如果我输入mydomain.com/admin/,手动添加斜杠,它会按预期工作。但我更喜欢重定向mydomain.com/adminmydomain.com/admin/

问题是为什么在 devel mod_dir 中似乎在进行重定向,而在部署中却没有。

我在配置文件中做了一个 grep 来查看 DirectorySlash 指令是否在某处被禁用并且什么也没找到。它既没有在开发中明确启用,所以我认为它应该默认启用。无论如何,我将其添加到部署主机上的 .htaccess 文件中:

DirectorySlash on

但它也没有工作。

有什么提示吗?

4

1 回答 1

0

/admin文件夹受密码保护。我不认为这是相关的,但事实上它是相关的。

我的.htaccess文件也有这些规则:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .* index.php [L]
    </IfModule>

问题与有关- 请参阅此处以获得良好的解释。

基本上,当 Apache 生成 401 错误以要求浏览器输入密码时,它还会生成另一个不使用任何文件夹、目录或符号链接的请求,因此它被重定向到index.php.

解决方法是将其添加到.htaccess站点根文件夹上的文件中:

ErrorDocument 401 /error/null.html
ErrorDocument 403 /error/null.html

并创建该文件,例如:

touch ./error/null.html

这些不是最佳实践,但在我寻找更好的解决方案时,它们会暂时使用。

于 2012-01-23T11:08:44.560 回答