5

これは本当に単純なはずですが、php フレームワークのように URL を変数として使用できるようにしたいと考えています。

mywebsite.com/hello-world

index.php に「hello-world」を変数として認識させ、index.php をロードさせたいと考えています。これはphpを介して行われますか、それともhtaccessファイルを使用する必要がありますか?

多くの php フレームワークは、URL を使用してインデックス ファイルにメッセージを送信します...たとえば...

mysite.com/controller/view

これらをphp経由で自分でルーティングするにはどうすればよいですか?

少しの援助?

4

3 に答える 3

3

2 つのステップがあります。

  1. ファイルを使用して URL を書き換え.htaccessます (Linux の場合)。すべてのリクエストが php ファイルに送信されるようにする必要があるため、存在しないファイルとフォルダーへのすべてのリクエストを php ファイルに書き直す必要があります。
  2. PHP ファイルで、(たとえば を使用して$_SERVER['REQUEST_URI']) URL を分析し、その内容に応じてアクションを実行します。

ステップ 1. では、次のようなものを使用できます。

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ your_file.php?url=$1 [L,QSA]

そして、ステップ 2 の php ファイルに、要求された URL が$_GET['url'].

編集:

特定のサブディレクトリのみを書き換えたい場合は、次のようなルールを使用することもできます。

RewriteRule ^sub/dir/to/rewrite/(.*)$ your_file.php?url=$1 [L,QSA]

いくつかの詳細:

  • ^(.*)$^startと end の間のすべて (すべての文字) をキャプチャします$。のようにクエリ文字列で使用できるように、括弧を使用してキャプチャされます$1。編集された例では、後のセクションのみ..../rewrite/がキャプチャされます。
  • 間のオプションは、それが処理する最後のルールであり、元のクエリ文字列も新しい URL に追加される[ ... ]ことを意味します。つまり、URL が書き換えられた url: に変数が追加されることを意味します。LQSA/hello-world?some_var=4some_varyour_file.php?url=hello-world&some_var=4
于 2013-06-22T02:24:30.030 に答える
1

この種の再ルーティングは、Web サーバー レベルで、サーバーの Apache 構成ファイルで、または (より可能性が高い).htaccessファイルを介して行う必要があります。

これは、.htaccessこの種の再ルーティングを行うために自分のサイトで使用するファイルです。

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f

#Route everything else through index.php
RewriteRule .* index.php/?$0 [PT,L]

次にindex.php、データベース内の URL を検索して、ページ コンテンツを取得します。

if(isset($_SERVER['REQUEST_URI']) and strlen($_SERVER['REQUEST_URI']) > 1)
    $requested_url = substr($_SERVER['REQUEST_URI'], 1);
else
    $requested_url = 'home';
于 2013-06-22T02:30:19.997 に答える