我正在使用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
中,但这也没有帮助。
非常感谢你的帮助,
大卫
答案 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