Php 我如何删除“&引用;在htaccess中使用mod_重写的查询字符串中?

Php 我如何删除“&引用;在htaccess中使用mod_重写的查询字符串中?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我正在努力完成(我认为应该是)一项相当简单的mod_rewrite任务。基本上,我需要删除所有查询字符串中的“?”。我应该注意,这是一个奇怪的php应用程序,其中查询字符串只有名称(没有值)。所以,我需要这个: http://mysite.com/?cheese-is-tasty 成为: http://mysite.com/cheese-is-tasty 为了清楚起见,我希望用户键入不带“?”的url 我的尝试和谷歌搜索导致我添加了以下.htaccess文件: RewriteEngine o

我正在努力完成(我认为应该是)一项相当简单的
mod_rewrite
任务。基本上,我需要删除所有查询字符串中的“?”。我应该注意,这是一个奇怪的php应用程序,其中查询字符串只有名称(没有值)。所以,我需要这个:

http://mysite.com/?cheese-is-tasty
成为:

http://mysite.com/cheese-is-tasty
为了清楚起见,我希望用户键入不带“?”的url

我的尝试和谷歌搜索导致我添加了以下
.htaccess
文件:

RewriteEngine on
RewriteRule (.*) \?$1

我是否接近正确的解决方案?

我自己使用以下方法:

RewriteRule ^(.*)$ index.php?page=$1 [L]
然后在index.php中,类似于:

<?php
$page = $_GET['page'];
...
?>

以下是.htaccess部分:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L,QSA]
然后,您必须使用PHP解析url:

<?php
    $requestURI = explode("/", $_SERVER["REQUEST_URI"]);
    $scriptName = explode("/",$_SERVER["SCRIPT_NAME"]);

    for($i= 0;$i < sizeof($scriptName);$i++)
            {
          if ($requestURI[$i] == $scriptName[$i])
                {
                    unset($requestURI[$i]);
                }
          }         
    $route = array_values($requestURI);

  /* for http://www.domain.com/page/view/1 the variable will be :
    Array ( [0] => page [1] => view [2] => 1) */

    $page = $route[0];


?>

使用$page,您可以加载任何需要加载的页面。
更详细的资料来源:

一如既往,“谢谢”是多余的。避免这个毫无意义的样板,相反,只需回馈!礼貌是多余的。知道了。谢谢哎呀!不,礼貌是必要的,但简洁为阅读Qs节省了时间。当你得到一个好的观点或一个解决方案时,就是说谢谢的时候了。当您+1或勾选注释或ans时;这也给了一个复杂的声誉方面的奖励:-)实际上,写签名比不写签名更不礼貌。这只是样板,因此没有任何意义。嗯@LightnessRacesinOrbit,你真的把“谢谢”从我所有的老问题中去掉了吗?真正地甚至我2009年的问题?好吧,如果你对此有那么强烈的感觉(并且有空闲的时间),我想那很好。一个简单的问题:这是一个堆栈溢出规则,还是更多的是个人的不满?我不想在这里挑起争论,我真的很好奇。它传输的参数很好,但是你不应该做一个重写秒来检查它不会永远循环到'index.php'请求吗?这不完全是我想要的,但它引导我找到我的解决方案。谢谢