1

我有一个小的 mod_rewrite 问题。

  1. 我有 index.php (在根目录中),其中包含简单的 href 链接:

    <a href="novice/this-is-something">Novice</a>
    

当我单击 Novice 时,将我重定向到 novice.php 文件(它是 mod_rewrited,在 URL 中看起来不像novice.php?query=this-is-something,但看起来像novice/this-is-something(这个-is-something 是我的查询))问题是,当我试图在 novice.php 文件中获取“this-is-something”查询时。

我在 novice.php 文件中得到这个查询,如下所示:

    if (isset($_GET['query'])){
$query=$_GET['query'];

echo $query;
    }else{
echo 'Null parameters.';    
    }

但它只输出 0

但是当我在 href 链接中传递数字时,就像这样:

    <a href="novice/2131">Novice</a>

novice.php 文件中的输出正确:2131

我的 .htaccess 中有这样的代码:

    RewriteRule ^novice/([^/\.]+)/?$ novice.php?query=$1 [L]

那么我在 mod_rewrite 中做错了什么,我可以通过 $_GET 方法获取数字,但我无法通过 $_GET 获取字符串或字符?

4

1 回答 1

0

我自己找到了解决方案。

我刚刚在 RewriteRule ^novice/([^/.]+)/?$ novice.php? 查询=$1 [L]

“blabla”字-> RewriteRule ^novice/([^/.]+)/?$ novice.php? blabla =$1 [L]

然后一切正常......非常奇怪......

    if (isset($_GET['blabla'])){
    $blabla=$_GET['blabla'];

   echo $blabla;
}else{
 echo 'Null parameters.';    
}

它现在回显参数this-is-something .. 但仍然不知道是什么问题.. 我刚刚更改了包含参数“ this-is-something ”的变量“ query ”的名称..

顺便说一句,如果有人感兴趣:我的 .htaccess 看起来像这样:

    Options +FollowSymLinks
    RewriteEngine On

    # Unless directory, remove trailing slash
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/$ http://localhost/local_ageo.si/$1 [R=301,L]

    # Redirect external .php requests to extensionless url
    RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
    RewriteRule ^(.+)\.php$ http://localhost/local_ageo.si/$1 [R=301,L]

    # Resolve .php file for extensionless php urls
    RewriteRule ^([^/.]+)$ $1.php [L]

    RewriteRule ^novice/([^/\.]+)/?$ novice.php?blabla=$1 [L]
于 2013-01-11T15:45:00.880 回答