私は、埋め込まれた URL 情報を次のように表現することに慣れています。
http://test.com/reports/statement.php?company=ABC&q=1
代わりにこのようにするにはどうすればよいですか?
http://test.com/reports/ABC/Q1
Apache mod_rewrite
これを実現するには、を使用する必要があります。
サーバーで有効になっている場合は、次のように実行できます.htaccess
。
RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /statement.php?company=$1&q=$2 [L]
他の人が述べたように、URL 書き換えを使用する必要があります。
通常はこれを利用するphpアプリで、 Front Controllerというパターンを適用します。
これは、ほぼすべての URL が 1 つのファイルを指すように書き換えられることを意味します。そこでは、通常、アクションに対して定義したパターンと照合することによって、$_SERVER['PATH_INFO'] を使用して何をすべきかを決定します。 url は、指定されたパターンのいずれとも一致しません。
これはルーティングと呼ばれ、最新のすべての php フレームワークには、この作業を支援するコンポーネントがあります。
リソースの URL を手書きする代わりに生成するツールを提供するのも賢明な方法です。これにより、URL パターンを変更しても、どこでも書き直す必要がなくなります。
複雑なルーティング システムが必要な場合は、Symfony2、Zend Framework 2、Auraphp などの主要なフレームワークのルーティング コンポーネントを調べてください。
最も単純な php ルーターについては、代わりにGluePHPを確認してください。コードベースは小さいので、どのように機能するかを自分で考え、必要に応じてニーズに合った小さなルーターを実装することもできます.
$_SERVER['PATH_INFO'] を使用して、スクリプトのアドレスの後のURL docpath 内の任意のものにアクセスできます。
例えば
http://test.com/reports/statement.php/ABC/Q1
...次に、statement.php では、$_SERVER['PATH_INFO'] に文字列 "/ABC/Q1" が含まれます。
もちろん、URL に一致するように Web サーバーをセットアップし、HTTP 要求に基づいて正しいスクリプトをターゲットにする必要があります。