2

私は自分の問題の解決策を探しましたが、このリンクを見つけました。しかし、それは私の問題を満たしていません。私は現在PHPを使用してWebサイトを構築しており、URLのクエリ文字列を試してみました。たとえば、次のようなURLがたくさんあります。

www.example.com?page=something
and also
www.example.com?page=something&action=anything

私が欲しいのは:

www.example.com/something
and
www.example.com/something/anything

私は.htacessスクリプトも初めてなので、Googleからいくつかの提案を受けても、スクリプトが私にとって何を意味するのかわかりません。

ありがとう。

4

2 に答える 2

1

これにはさまざまなタイプのアーキテクチャがあります。

最も一般的なのはmod_rewriteです。のセットを使用して、RewriteRuleトラフィックを好きなようにリダイレクトできます。

この例は次のとおりです。

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+)(?:/([^/]+))? index.php?page=$1&action=$2 [L]

ただし、これらのルールの管理は間違いなく複雑になります。あなたの場合、次のようなURLに対して別のルールを作成する必要があります。/some/other/page

もう1つのアプローチは、フロントエンドコントローラーパターンを使用することです。すべてのトラフィックは、ルーティングされる1つの場所(index.phpなど)を通過します。Apache 2.2.17以降(最近のほとんどのサーバー)を実行している場合は、を使用して1行でこれを実行できますFallbackResource

例えば:

FallbackResource /index.php
于 2012-06-15T02:48:15.950 に答える
1

これは、mod_rewriteを使用したかなり初歩的な書き換えです。このような何かが仕事をするはずです:

RewriteEngine On
RewriteRule ^([^/]+)(?:/([^/]+))? index.php?page=$1&action=$2 [L]

この表現([^/])は、次のまですべてを一致させることを意味し/ます。には(?:/([^/]+))?同じパターンが含まれていますが、非キャプチャグループ(?:/ )?に囲まれているため、2番目のグループ全体がオプションになります。

于 2012-06-15T02:48:49.957 に答える