这是我的.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/
请求被映射到相对于DocumentRoot
as 的文件系统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
...