我正在尝试为网站制作一个管理系统,但是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:
答案 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
这就是为什么它不会像你期望的那样改写。