Apache DirectorySlash似乎不起作用

时间:2012-01-20 10:11:03

标签: apache apache2 directory slash

我正面临着我尝试部署的网站的问题。该站点在我的开发主机上运行正常,但部署失败。两个主机都有一个非常相似的配置,都是Ubuntu Linux发行版(dev: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/admin重定向到mydomain.com/admin/

问题是为什么在开发中mod_dir似乎正在进行重定向,而在部署中则没有。

我在配置文件中做了一个grep,看看DirectorySlash指令是否在某个地方被禁用而没有找到任何内容。它既没有在devel上显式启用,所以我认为默认情况下应该启用它。无论如何,我将它添加到部署主机上的.htaccess文件中:

上的DirectorySlash

但它也没有用。

任何提示?

1 个答案:

答案 0 :(得分: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>

问题与this有关 - 请参阅here以获得更好的解释。

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

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

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

并创建该文件,例如:

touch ./error/null.html

这些不是最佳做法,但在寻找更好的解决方案时,他们现在会这样做。