为什么.htaccess 会重定向到“default.asp”以及它是什么?

为什么.htaccess 会重定向到“default.asp”以及它是什么?

这是我的.htaccess 文件的内容:

Options MultiViews
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.lventas.com$ [NC]
RewriteRule ^(.*)$ http://lventas.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ http://lventas.com/negocio/$1 [L,QSA]

ErrorDocument 404 http://www.lventas.com/404.php
RewriteOptions Inherit

转到根文件夹时它不应该执行任何操作,但它仍重定向到:

http://lventas.com/negocio/default.asp

“default.asp”是什么?为什么指向那里?

答案1

正如@uSlackr 在评论中提到的,其中一个父配置可能包含如下指令;

 DirectoryIndex default.asp

DirectoryIndex指令为客户端请求目录时提供默认资源,即http://www.lventas.com/请求被映射到相对于DocumentRootas 的文件系统REQUEST_FILENAME=/default.asp

但是,由于 default.asp 不作为文件、目录或链接存在,因此它会像这样匹配您的第二个 RewriteRule;

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ http://lventas.com/negocio/$1 [L,QSA]

所以最终的要求是http://lventas.com/negocio/default.asp

您通常可以像这样覆盖它;

DirectoryIndex index.php

Options MultiViews
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.lventas.com$ [NC]
RewriteRule ^(.*)$ http://lventas.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ http://lventas.com/negocio/$1 [L,QSA]

ErrorDocument 404 http://www.lventas.com/404.php
RewriteOptions Inherit

或者似乎有可能只是取消设置DirectoryIndex而已;

DirectoryIndex

Options MultiViews
...

相关内容