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/home并在index.php的第一行放了一个断点,但得到了404.mysite.com/index.php?params=x/y/z
为什么这对我不起作用的任何想法?谢谢你!
答案 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