我几乎阅读了有关此问题的所有帖子,似乎没有任何效果。
我已经成功重写了下面的代码,它运行得很好。 .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文件中?
答案 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.conf
或user.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文件中使用的代码。一切都在天堂里解决了。这需要花费大量的精力和一个主要的头痛。
感谢您的帮助。