1

少し mod_rewrite の問題があります。

  1. シンプルなhrefリンクを含むindex.php(ルートディレクトリ内)があります:

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

初心者をクリックすると、novice.php ファイルにリダイレクトされます (これは mod_rewrited であり、URL ではNovice.php?query=this-is-something のようには見えませんが、novice /this-is-something のように見えます(この-is-something is my query)) 問題は、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]

$_GET メソッドで数値を取得できるのに、$_GET で文字列や文字を取得できないという mod_rewrite の何が間違っているのでしょうか。

4

1 に答える 1

0

私は自分で解決策を見つけました。

RewriteRule ^novice/([^/.]+)/?$novice.php? の最後にある「クエリ」ワードを変更しました。クエリ=$1 [L]

"blabla" 単語 -> RewriteRule ^novice/([^/.]+)/?$novice.php? ブラブラ=$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 に答える