Clean URL上的PHP问号

时间:2011-10-30 15:01:16

标签: php apache mod-rewrite clean-urls

我目前正在尝试了解干净的网址。我曾经使用过一次Windows。 当突然我的.htaccess似乎无法工作时,我切换到ubuntu 这是我的htaccess

<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_name

但是每当我添加'?'时它才会起作用在uri

  

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

我很确定mod_rewrite已启用。我甚至检查了我的phpinfo()

2 个答案:

答案 0 :(得分:2)

听起来重写模块已被禁用。编辑您的apache配置并加载mod_rewrite的动态模块(如果有)。它看起来像这样:

LoadModule rewrite_module modules/mod_rewrite.so

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

sudo /etc/init.d/apache2 restart

答案 1 :(得分:0)

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