0

この URL を取得するために mod を書き換えようとしています: localhost/test/index.php?hello

このページ用に hello.php というファイルを作成しました。これは /test フォルダーにあります。

明確にするために、hello.php へのリンクを含む別のページがありますが、リンクをクリックして hello.php にアクセスすると、URL に localhost/test/index.php?hello を表示できる正しい URL は何ですか?ページ。

以下は正しくないようです。

 RewriteRule ^.*$ index.php?$1 [L]
4

2 に答える 2

0
  1. GET パラメータを使用している限り、2 に .htaccess は必要ありません。index.php で使用します。

    if (isset($_GET['hello'])) include('hello.php');
    

これにより、index.php 内の hello.php の内容が表示されます。

于 2013-07-01T08:21:35.540 に答える
0

PHPファイルだけを実行したい場合は、これを試してください。

    RewriteEngine on
    RewriteRule (.*)\.php$ /index.php?$1 [L]

私の答えが何をするかを明確にするために。それはあなたが求めていたもののように聞こえる、よりフレンドリーな URL を提供します。

したがって、使用できlocalhost/hello.php、にinternallyリダイレクトされ/localhost/index.php?helloます。内部的には、ブラウザで表示されることはなくlocalhost/index.php?hello、常に表示localhost/hello.phpされることを意味します。

任意の URL を実行でき、php ファイルに書き換えられます。例えばlocalhost/index.php?newpage、あなたが使用することができます/localhost/newpage.php

それがより明確であることを願っています。

編集

逆にしたいのですが、PHPがどのように構築されているかわかりませんが、クエリ文字列は通常、フィールドと値のペアです。たとえば、、name=johnなどpage=contactaction=helloあなたは持ってindex.php?hellohelloますが、内容も価値もありません。

それがおそらく、URL を書き直すのに苦労している理由です。を使用$_GETするには値が必要です。

だから私がすることは、あなたのURLがフィールド/値のペアを使用してこのようなものだった場合です

index.php?action=hello

次に、index.phpファイルで次のようなことができます

$action = $_GET["action"];

if($action == "hello"){
//show contents of hello, include a page or whatever
}

適切な URL があれば、簡単に書き換えることができます。

したがって、表示したいURLが次のような場合

index.php?action=helloそして、あなたはそれをにリダイレクトしたいhello.php

.htaccess は次のようになります

RewriteRule ^action=([^/]+) /$1.php [R,L]

それはそれをphpファイルにリダイレクトします。リダイレクトを表示せずに内部リダイレクトのままにしておく場合は、Rフラグを削除してそのままにしておくことができます[L]

個人的には、非常に長いクエリ文字列の URL の例をユーザーに見せたくありません。mysite.com?page=music&artist=someartist&title=sometitle

したがって、元の回答のように、すべての URL がより短く、より親しみやすいものに書き直されます。

于 2013-06-30T07:35:34.370 に答える