如何从mod_rewrited url查询字符串获取

时间:2013-01-10 10:51:14

标签: mod-rewrite get query-string

我有一个liitle mod_rewrite问题。

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

    <a href="novice/this-is-something">Novice</a>
    
  2. 当我点击Novice时,将我重定向到novice.php文件(这是mod_rewrited,在网址中看起来不像 novice.php?query = this-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得到字符串或字符串?

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。

我刚刚在RewriteRule结束时更改了“查询”字样^ / novice /([^/.]+)/?$ novice.php?查询 = $ 1 [L]

“blabla”字 - &gt; RewriteRule ^新手/([^ /。] +)/?$ novice.php? blabla = $ 1 [L]

然后工作一切......很奇怪......

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

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

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

如果有人感兴趣的话:我的.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]