子目录中的.htaccess总是指root

时间:2014-10-26 15:43:42

标签: apache .htaccess mod-rewrite redirect rewrite

我正面临着一个非常奇怪的行为.htaccess。每当我尝试访问由mod_rewrite重写的链接时,我的.htaccess都会引用根目录而不是我工作的子目录。我的文件夹结构如下所示:
htdocs/ blog6/ .htaccess
我的.htaccess看起来像那样:

Options +FollowSymLinks -MultiViews

ErrorDocument 401 /core/error/401.php
ErrorDocument 403 /core/error/403.php
ErrorDocument 404 /core/error/404.php
ErrorDocument 500 /core/error/500.html

RewriteEngine on
RewriteBase /blog6/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?page=$1 [L]

但是每当我尝试通过重写的URL访问文件时,我都会收到404错误并且日志显示:

C:/xampp/htdocs/index.php' not found or unable to stat

所以看起来我的.htaccess想要访问htdocs中的文件而不是使用子目录。当我在我的rewriteRule中写/blog6时,一切正常,但为什么RewriteBase不能正常工作?如果它很重要,我会在我的HTML

中使用<base>

1 个答案:

答案 0 :(得分:1)

RewriteBase仅在您提供RewriteRule 目标中的相对网址时才有效,因此请将代码更改为:

Options +FollowSymLinks -MultiViews

ErrorDocument 401 /core/error/401.php
ErrorDocument 403 /core/error/403.php
ErrorDocument 404 /core/error/404.php
ErrorDocument 500 /core/error/500.html

RewriteEngine on
RewriteBase /blog6/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA]