2011-10-30 126 views
0

我目前正在尝试了解干净的网址。我曾经使用过窗户。 我切换到Ubuntu的时候,突然我的.htaccess似乎不在这里工作 是我的htaccess干净网址上的PHP问号

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

,所以我有这个网址

http://localhost/index.php/my_name/

我被它期待说在浏览器中的'my_name'字符串

hello my_名称

但它只会工作,只要我添加'?'在URI

http://localhost/index.php?/my_name/

我敢肯定mod_rewrite的启用。我甚至检查了我的phpinfo()

+0

也许你没有安装mod_rewrite模块?检查httpd.conf并检查你的日志([info](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog)) – Peter

+0

index.php文件中的代码是什么? –

+0

这一次我有我的mod_rewrite启用,但它仍然需要一个?为了回显$ _SERVER [QUERY_STRING] – kapitanluffy

回答

2

这听起来像重写模块被禁用。如果可用,编辑您的apache配置并加载mod_rewrite的动态模块。它应该是这样的:

LoadModule rewrite_module modules/mod_rewrite.so 

如果你正在使用Ubuntu,运行sudo a2enmod rewrite,使模块通过重新启动Apache服务器如下:

sudo /etc/init.d/apache2 restart 
+0

所以我会把LoadModule放在httpd.conf里面?该死的硬是一个Windows用户xD – kapitanluffy

+0

@kapitanluffy您使用的是什么Linux发行版?一般来说,你确实要把它放在httpd.conf中,但发行版可能有他们自己喜欢的配置方法。 – Lekensteyn

+0

我正在使用Ubuntu – kapitanluffy

0

找到了解决办法。转储$ _SERVER变量并使用REQUEST_URI索引,因为QUERY_STRING不显示任何内容。会+1 Lekensteyn的回答,因为它使我走向正确的道路