1

我目前在 Windows 7 上使用 wamp。显然我想清理我的网址。我试图找到当前的语法,但我还没有弄清楚。

我现在的路径是 localhost/rs/index.php
当我转到 localhost/rs/user 时,它给了我一个 404,但是 localhost/rs/ 给了我 index.php 页面。

这就是我在 wamp 的 www 目录中的 .htaccess 文件中的内容。

RewriteEngine On
RewriteRule ^/$ index.php
RewriteRule ^/([a-z]+)$ index.php?page=$1
RewriteRule ^/([a-z]+)/$ index.php?page=$1

我已取消注释该行

LoadModule rewrite_module modules/mod_rewrite.so

在 Apache 的 httpd.conf 文件中

怎么了?我的 .htaccess 文件在错误的位置吗?我的语法错了吗?

谢谢!

4

3 回答 3

2

将您.htaccess/rs文件夹放入并尝试

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]*)/?$ index.php?page=$1 [L]

希望这会有所帮助

于 2012-10-12T06:42:08.047 回答
1

您的 .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 文件中创建。这通常是检查问题所在的最佳方法。

于 2012-10-12T06:06:47.490 回答
0

如果您在子文件夹中运行它,则需要在之后添加此行RewriteEngine On

RewriteBase /rs

另外,请确保在您的 apache 虚拟主机部分中具有此值

AllowOverride All
于 2012-10-12T06:00:24.250 回答