ホームページ >バックエンド開発 >PHPチュートリアル >奇妙な URL です。誰かこの URL を説明できますか?
奇妙な URL です。誰かこの URL を説明できますか?
php プロジェクトを入力したところ、システムにページのリダイレクトがあります。ブラウザのアドレス バーに表示される URL は次のとおりです:
http://xxx。 com/index.php/member-orderPayments-2015071611557932.html
よくわかりません、http://xxx.com/index.php/ ここまででリソースが定義されましたが、なぜ最後に別のリソースがあります: member-orderPayments-2015071611557932.html
親愛なる神様、その理由を説明してください。
注:
上記の URL にアクセスすると、システムはエラーなく正常に動作します。
さらに、URL: http://xxx.com/index.php/
を入力するか、URL: http://xxx.com/index.php/member-orderPayments-2015071611557932.html
システムは正しく実行できます。もちろん、別のページにリダイレクトされます。
ブラウザがこの URL をどのように解析するのか理解できません。アドバイスをお願いします。
-----ソリューションのアイデア----------------------
は次のようにする必要があります使用されている URL 書き換え (UrlRewrite) テクノロジは、平たく言えば、疑似静的です
一般的な URL はパラメータを渡します (パラメータは ? 番号の後にあります)
http://xxx.com/index.php/メンバー。html?orderPayments=2015071611557932
---------------------------------
UrlRewrite
http://xxx.com/index.php/member-orderPayments-2015071611557932.html
プログラムは次の文字列を解析してパラメータを取得します
member-orderPayments-2015071611557932
------解決策のアイデア----------------------
http://xxx.com/index. php/abc
この URL によって開かれたリソースはまだ http://xxx.com/index.php
です。その後、/abc は、index.php のコードによってパラメーターとして受け取られます。
これはフレームワークの単一エントリの処理です。
urlwrite が追加された場合でも、
http://xxx.com/abc
は引き続き http://xxx.com/index.php に渡されます。 /abc はパラメータとして使用されます
-----解決策----------------------
これで完了です。目的は、検索エンジンの最適化で、アドレスを含めやすくしたり、アドレスの見栄えを良くしたりするためである可能性があります。
urlrewrite を使用する必要はありません (urlrewrite を使用する場合は、中間のindex.phpも使用できます)さらに削除可能)
echo "<pre class="brush:php;toolbar:false">";<br />preg_match('/\/([a-z0-9A-Z]+)\-([a-z0-9A-Z]+)\-([0-9]+)\.html/',$_SERVER['PATH_INFO'],$values);<br />print_r($values);<br />echo "";
Array<br />(<br /> [0] => /member-orderPayments-2015071611557932.html<br /> [1] => member<br /> [2] => orderPayments<br /> [3] => 2015071611557932<br />)