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=contact
。action=hello
あなたは持ってindex.php?hello
いhello
ますが、内容も価値もありません。
それがおそらく、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 がより短く、より親しみやすいものに書き直されます。