Htaccess不允许第三条规则

时间:2015-09-12 05:41:18

标签: php .htaccess

我的htaccess文件中有两个规则,而前两个工作正常,我无法弄清楚为什么第三个没有。 我目前所拥有的是

Options -Indexes
Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
#  Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)$ index.php?key=$1
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?key=$1
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?key=$1&id=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?key=$1&id=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?key=$1&id=$2&user=$3
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?key=$1&id=$2&user=$3


<files config.php>
order allow,deny
deny from all
</files>
<files loader.php>
order allow,deny
deny from all
</files>

我可以转到localhost/page/5,我可以去localhost/page就好了,但是如果我尝试去localhost/module/5/1它会中断并抛出404错误。 任何有关这方面的帮助都会非常感激,因为我什么也看不见,所以这可能是一个简单而又愚蠢的错字。

1 个答案:

答案 0 :(得分:0)

您的规则正则表达式都不匹配/module/5/1 URI。你有这样的规则:

RewriteEngine On

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(\w+)/?$ index.php?key=$1 [L,QSA]

RewriteRule ^(\w+)/(\w+)/?$ index.php?key=$1&id=$2

RewriteRule ^(\w+)/(\w+)/(\w+)/?$ index.php?key=$1&id=$2&user=$3 [L,QSA]

\w匹配[a-zA-Z0-9_]