HTACCESS Works,但php $ _GET不行

时间:2013-12-06 12:35:04

标签: php .htaccess variables mod-rewrite get

我几乎阅读了有关此问题的所有帖子,似乎没有任何效果。

我已经成功重写了下面的代码,它运行得很好。 .htaccess文件位于/~user/business/文件夹中。我在访问RewriteRule ^index/([0-9]+)/?$ /index.php?id=$1 [QSA,PT]时使用http://localhost/~user/business/index/155/。但是,当我尝试在php中获取变量时,它什么都不返回。重写的工作原理是加载index.php,但根本没有获取变量。

我的主要目标是,我想从上面的代码中访问id,但没有显示任何内容。 <?php echo $_GET['id']; ?>即使我尝试这个print_r($_GET);所有get变量的数组,它也会返回一个空数组。我也不想将查询追加到url的末尾。

很多帖子都有根据回复工作的答案,即使我逐字复制,写信,更改目录和地址,似乎没有任何作用。

我正在使用Apache 2,在MAC上设置为localhost。有没有错,可能在php.ini文件中?

1 个答案:

答案 0 :(得分:3)

经过多次尝试,重新配置我的mac上的整个虚拟主机设置,我意识到一旦我意识到这是一个非常简单的错误,它与我的.htaccess没有任何关系文件。

我的文件名是index.php,我的重写是RewriteRule ^index/([a-zA-Z0-9_-]+)/ index.php?id=$1 [NC,L],出于某种原因,如果有一个名为^index的文件,它将不允许我使用index.php。我可以将^index命名为^page^blue或其他任何内容,但不是^index,它会正常工作。

我意识到只需输入/index.php即可加载/index页面。因此,实际上并不是重定向,而是独立页面。

为了解决这个问题,我必须使用终端在vhost.confuser.conf文件下的<Directory "/Users/User/Sites">文件中添加几行代码。

sudo nano /private/etc/apache2/extra/httpd-vhosts.conf

在这里,代码我必须从选项中删除MultiViews

<Directory "/Users/User/Sites">
    Options Indexes FollowSymLinks SymLinksifOwnerMatch MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

现在看起来像这样

<Directory "/Users/User/Sites">
    Options Indexes FollowSymLinks SymLinksifOwnerMatch
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

一旦我这样做,就无法再通过输入/index.php来加载/index页面。因此,我可以使用我最初在.htaccess文件中使用的代码。一切都在天堂里解决了。这需要花费大量的精力和一个主要的头痛。

感谢您的帮助。