DirectorySlash关闭不起作用

时间:2017-04-25 08:23:57

标签: apache .htaccess

我正在使用apache 2.4.7

这是我的虚拟主机配置:

DocumentRoot /var/www/login
ServerName login.mydomain.com
<Directory "/var/www/login">
    allow from all
    AllowOverride All
    Options +Indexes
    DirectoryIndex index.html index.php
    DirectorySlash Off
    Require all granted
</Directory>

在我的/var/www/login目录中,我有一个名为freeseat的目录,其中有index.php个文件,因此它的完整位置为/var/www/login/freeseat/index.php

当我尝试通过以下链接(域名替换)访问它时,它会重定向到带有斜杠的同一URL: http://login.mydomain.com/freeseat - &gt; http://login.mydomain.com/freeseat/

DirectorySlash Off为何不起作用?我试着把它放在.htaccess中,但这也没有帮助。

非常感谢你的帮助,

大卫

1 个答案:

答案 0 :(得分:0)

首先,如果您不使用该指令,您的vHost将无法工作。 这有效:

<VirtualHost *:80>
    DocumentRoot /var/www/login
    ServerName login.mydomain.com
    <Directory "/var/www/login">
            Allow from all
            AllowOverride All
            Options +Indexes
            DirectoryIndex index.html index.php
            DirectorySlash Off
            Require all granted
    </Directory>
ErrorLog /var/www/login/error.log
</VirtualHost>

回答你的问题:DirectorySlash按预期工作。

另请参阅mod_dir的apache文档,尤其是名为&#34;安全警告&#34;的红色框。部分&#34; DirectorySlash&#34;。

提示:始终使用不可公开访问的错误日志来确定邪恶的根源。 :)

编辑#1:

我想我可能误解了你的问题。您希望通过http://login.mydomain.com/freeseat访问/var/www/login/freeseat/index.php(无尾随斜杠)。

然后,删除freeseat文件夹并使用index.php作为var / www / login / freeseat.php并在/var/www/login/.htaccess文件中创建一个RewriteRule(mod_rewrite必须处于活动状态):

RewriteEngine On
RewriteRule ^freeseat$ freeseat.php

另外,放弃

Options +Indexes
DirectoryIndex index.html index.php
来自您的vHost配置。它不再需要了。