Htaccess忽略文件夹

时间:2012-06-27 14:12:28

标签: php .htaccess

我正在尝试为网站制作一个管理系统,但是htaccess会破坏它D:

管理部分位于名为admin的文件夹中。

我的远方:

Options +FollowSymLinks -Indexes

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^(admin)$ admin/index.php
RewriteRule ^([\wæøå]+)$ index.php?page=$1 [QSA]
RewriteRule ^([\wæøå]+)/$ index.php?page=$1 [QSA]

RewriteRule ^(nyhed)/([\w\d\-æøå]+)$ index.php?page=$1&nyhed=$2 [QSA]
RewriteRule ^(nyhed)/([\w\d\-æøå]+)/$ index.php?page=$1&nyhed=$2 [QSA]

但不会让我进入那个文件夹?

所以我在索引中做了if

if($_GET["page"] == "admin"){
    header("location:http://google.com");
}

但这也不会做任何事情,也没有错误D:

2 个答案:

答案 0 :(得分:0)

RewriteCond系列可以像你拥有的那样串在一起,但它们只影响它们的第一个规则。

Options +FollowSymLinks -Indexes

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [QSA]

这会将对不存在的目录和文件的所有请求发送到index.php。存在的文件和目录不会受到影响。其他规则是不必要的。

答案 1 :(得分:0)

这是你的问题:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

您正在重写一个名为admin的目录,该目录在您的文件系统中非常存在,因为Apache说:

if this path does not exist as a directory path or as a file path continue with the rewrites

这就是为什么它不会像你期望的那样改写。