您的 .htaccess 文件应放置在“/rs”文件夹中,与 index.php 所在的目录相同。
我尝试过启用重写日志,以及在尝试访问时看到的内容localhost/test/user
:
::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/initial] (3) [perdir D:/Development/htdocs/test/] 条每个目录前缀:D:/Development/htdocs/test/user -> user
::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/initial] (3) [perdir D:/Development/htdocs/test/] 申请模式 '^/$' 到 uri 'user'
::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/initial] (3) [perdir D:/Development/htdocs/test/] 条每个目录前缀:D:/Development/htdocs/test/user -> user ::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/初始] (3) [perdir D:/Development/htdocs/test/] 将模式 '^/([az]+)$' 应用于 uri 'user'
::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/initial] (3) [perdir D:/Development/htdocs/test/] 条每个目录前缀:D:/Development/htdocs/test/user -> user
::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/initial] (3) [perdir D:/Development/htdocs/test/] 申请模式 '^/([az]+)/$' 到 uri 'user'
::1 - - [12/Oct/2012:09:53:11 +0400] [localhost/sid#68a898][rid#1cc4d48/initial] (1) [perdir D:/Development/htdocs/test/] 通过通过 D:/Development/htdocs/test/user
从第一行可以清楚地看出,mod_rewrite 正在剥离开头的 '/',而你得到的是 'user' 而不是 '/user'。所以,重写规则应该不带'/',即:
RewriteEngine On
RewriteRule ^$ index.php
RewriteRule ^([a-z]+)/?$ index.php?page=$1
另请注意,我通过编写“/?”组合了最后两条规则。这意味着 url 末尾的“/”符号是可选的。
为了打开重写日志,请在 httd.conf 文件中设置以下内容:
#
# Logging for mod_rewrite
# Use RewriteLogLevel 3 only for debug purposes
# Normally use RewriteLogLevel 0
#
<IfModule rewrite_module>
RewriteLogLevel 3
RewriteLog "logs/rewrite.log"
</IfModule>
这样日志将在 logs/rewrite.log 文件中创建。这通常是检查问题所在的最佳方法。