RewriteEngine不在本地重写URL?

时间:2011-01-30 23:34:59

标签: php apache .htaccess mod-rewrite

Options +FollowSymlinks

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f # not a file
RewriteCond %{REQUEST_FILENAME} !-d # not a directory
RewriteRule ^(.+)$ index.php?params=$1 [L]

正如你所看到的,我正试图转换像

这样的东西
  

mysite.com/x/y/z

  

mysite.com/index.php?params=x/y/z

然而,它不起作用。我试过mysite.com/home并在index.php的第一行放了一个断点,但得到了404.

为什么这对我不起作用的任何想法?谢谢你!

2 个答案:

答案 0 :(得分:5)

首先,确保您的Apache服务器上已启用mod_rewrite

然后删除行尾的注释:

# not a file
RewriteCond %{REQUEST_FILENAME} !-f
# not a directory
RewriteCond %{REQUEST_FILENAME} !-d

From the Apache documentation

  

以哈希开头的行   字符“#”被视为评论,   并被忽略。 评论可能不是   包括在a之后的一行   配置指令。

答案 1 :(得分:1)

似乎未安装或启用mod_rewrite,或者您已将特定目录的AllowOverride - 指令设置为None。将其更改为(至少)FileInfo