-1

私は、埋め込まれた URL 情報を次のように表現することに慣れています。

http://test.com/reports/statement.php?company=ABC&q=1

代わりにこのようにするにはどうすればよいですか?

http://test.com/reports/ABC/Q1
4

3 に答える 3

1

Apache mod_rewriteこれを実現するには、を使用する必要があります。

サーバーで有効になっている場合は、次のように実行できます.htaccess

RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /statement.php?company=$1&q=$2 [L]
于 2013-01-20T17:04:34.527 に答える
0

他の人が述べたように、URL 書き換えを使用する必要があります。

通常はこれを利用するphpアプリで、 Front Controllerというパターンを適用します。

これは、ほぼすべての URL が 1 つのファイルを指すように書き換えられることを意味します。そこでは、通常、アクションに対して定義したパターンと照合することによって、$_SERVER['PATH_INFO'] を使用して何をすべきかを決定します。 url は、指定されたパターンのいずれとも一致しません。

これはルーティングと呼ばれ、最新のすべての php フレームワークには、この作業を支援するコンポーネントがあります。

リソースの URL を手書きする代わりに生成するツールを提供するのも賢明な方法です。これにより、URL パターンを変更しても、どこでも書き直す必要がなくなります。

複雑なルーティング システムが必要な場合は、Symfony2、Zend Framework 2、Auraphp などの主要なフレームワークのルーティング コンポーネントを調べてください。

最も単純な php ルーターについては、代わりにGluePHPを確認してください。コードベースは小さいので、どのように機能するかを自分で考え、必要に応じてニーズに合った小さなルーターを実装することもできます.

于 2013-01-20T17:33:39.050 に答える
0

$_SERVER['PATH_INFO'] を使用して、スクリプトのアドレスののURL docpath 内の任意のものにアクセスできます。

例えば

http://test.com/reports/statement.php/ABC/Q1

...次に、statement.php では、$_SERVER['PATH_INFO'] に文字列 "/ABC/Q1" が含まれます。

もちろん、URL に一致するように Web サーバーをセットアップし、HTTP 要求に基づいて正しいスクリプトをターゲットにする必要があります。

于 2013-01-20T17:09:01.457 に答える