0

私は次のようなURIをたくさん見ました:

www.fakesite.net/stories/1234/man_invents_fire

そして、URIの/ 1234 / man_invents_fireの部分が実際にディレクトリなのか、それともGETパラメータ(または他の何か)なのか疑問に思いました。多くの場合、/ man_invents_fireセグメントは不要であることに気付きました(結果なしで削除できます)。そのため、/ 1234 /はデータベーステーブル(またはそれらに沿ったもの)のストーリーのID番号であると私は信じました。行)。

URIのこれらのセグメントがGETパラメーターである場合、これを実現する簡単な方法はありますか?そうでない場合、何が行われていますか?

(また、CodeIgnitorがこの種の機能を提供することは知っていますが、CodeIgnitorがなくても簡単に実現できるかどうか知りたいと思いました。ただし、答えに関連する場合は、通常はPHPです)

ありがとう

4

8 に答える 8

2

最も簡単な方法は、すべてをメインのindex.phpファイルにルーティングし、$ piece = explode( "/"、$ _SERVER ['REQUEST_URI']);を実行して、そこからルーティングを把握することです。

mod_rewriteをインストール/有効化した後、apache構成でallow overrideがfalseに設定されていないことを確認し(.htaccessの読み取りを許可するため)、これをdocrootの.htaccessファイルにスローします。

<ifModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-s #Make sure the file doesn't actually exist (needed for not re-routing things like /images/header.jpg)
    RewriteRule .  /index.php  [L,QSA] #re-route everything into index.php
</IfModule>
于 2009-08-14T16:17:09.977 に答える
0

それはURL書き換えと呼ばれ、それをグーグルで検索すると、それに関する多くの情報が見つかります。

于 2009-08-14T16:02:58.990 に答える
0

WordPressのパーマリンクと同様に、これは通常、Apacheのmod_rewrite(またはApacheを使用していない場合は同等のもの)を介して行われます。ただし、404エラーページハンドラーを使用して同じ結果を得ることができます(ただし、これは通常はお勧めしません)。

通常、すべてのページリクエストは、リクエストされたURIを解析して、指定されたパターンに適合するかどうかを判断するゲートウェイにリダイレクトされます(この場合はそうなる可能性があります/{category}/{article_id}/{article_title})。そこから、ゲートウェイは通常、article_idを使用して適切なコンテンツを取得できます。

システムによって異なりますが、通常は破棄/無視される可能性がcategoryあり、通常はSEO値に使用されます。ただし、場合によっては、何らかの方法で拡張するために使用されることがあります(たとえば、クエリするDBテーブルを決定するためなど)。article_titlecategoryarticle_id

Zendと同様に、MVCも同様の手法を使用して、実行するコントローラーとメソッドを決定します。このタイプの使用のフォーマットの例は/{module}/{controller}/{method};です。ただし、これは高度にカスタマイズ可能です。

于 2009-08-14T16:03:19.487 に答える
0

ええと、1234main_invents_fireがパラメータであると仮定するのは正しいことです。これらは、HTTPプロトコルがそれらを記述するという意味で、真のGETパラメーターではありませんが、URLを「わかりやすい」状態に保ちながら、同じタスクを実行します。この手法はURL書き換えと呼ばれ、最近のWebには情報が満載です。

これはPHPのわかりやすいURLに関する記事ですが、このトピックをグーグルで検索すると、より有用な結果が得られると確信しています。

于 2009-08-14T16:04:19.127 に答える
0

PHPでこれを実装するには、通常、.htaccessファイルを使用し、apacheのmod_rewriteモジュールを使用します。

于 2009-08-14T16:04:58.923 に答える
0

人々が簡単にブックマークできるように、彼らはそのようなURLを作成し、検索で安全に戻ることができます。

デコードに使用している言語によって異なります。この場合、「stories」がメインスクリプト、「1234」がID、「man_invent_fires」がタイトルであるように見えます。

phpを使用している場合は、$ _SERVER['PHP_SELF']または$_SERVER['REQUEST_URI']変数を使用してデコードできます。

そのようなウェブサイトを作成することを計画している場合は、特定の安全性に留意する必要があります。それらをグーグルで調べてください、しかし注意すべき重要なものはSQLインジェクターです。

于 2009-08-14T16:07:19.213 に答える
0

私の前の答えに加えていくつかの背景情報として、URLはまさにそれです-「ユニフォームリソースロケーター」。昔は、ファイル/ディレクトリ構造に1:1でマッピングすることがよくありましたが、HTTP仕様で必要なのは、特定のリソースを識別することだけです。基本的に、これは、特定の文字列が与えられた場合、サーバー上の特定の「リソース」を示す必要があることを意味します。実際には、HTTP環境では、これは通常、mod_rewriteなどの書き換えメカニズムを使用して実装されます。このようなRFC:http ://www.ietf.org/rfc/rfc1738.txtは、抽象的なものではありますが、概要を示しています。ただし、この概念は、いくつかの非自明な使用法を設計および実装した後にのみ実現します。

于 2009-08-14T18:19:41.273 に答える
-1

Symfonyを使用している場合は、ルーティング機能を使用してこれを行うことができます。

于 2009-08-14T16:04:04.930 に答える