我目前正在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文件是否在错误的位置?我的语法错了吗?
谢谢!
答案 0 :(得分:2)
将.htaccess
放入/rs
文件夹并尝试
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]*)/?$ index.php?page=$1 [L]
希望这会有所帮助
答案 1 :(得分:1)
您的.htaccess文件应放在'/ rs'文件夹中,与index.php所在的目录相同。
我尝试过启用重写日志,以及我在那里看到的,当试图访问localhost/test/user
时:
:: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#1cc4d48 / initial](3)[perdir D:/ Development / htdocs / test /] strip per-dir前缀:D:/ Development / htdocs / test / user - >用户
:: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#1cc4d48 / initial](3)[perdir D:/ Development / htdocs / test /]将模式'^ / $'应用于uri'用户'
:: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#1cc4d48 / initial](3)[perdir D:/ Development / htdocs / test /] strip per-dir前缀:D:/ Development / htdocs / test / user - >用户 :: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#1cc4d48 / initial](3)[perdir D:/ Development / htdocs / test /]申请模式'^ /([az] +)$'到uri'用户'
:: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#1cc4d48 / initial](3)[perdir D:/ Development / htdocs / test /] strip per-dir前缀:D:/ Development / htdocs / test / user - >用户
:: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#1cc4d48 / initial](3)[perdir D:/ Development / htdocs / test /]将模式'^ /([az] +)/ $'应用于uri'用户'
:: 1 - - [12 / Oct / 2012:09:53:11 +0400] [localhost / sid#68a898] [摆脱#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文件中创建日志。这通常是检查出错的最佳方式。
答案 2 :(得分:0)
如果您在子文件夹中运行它,则需要在RewriteEngine On
RewriteBase /rs
另外,请确保您的apache虚拟主机部分中具有此值
AllowOverride All