2009-08-11 12 views
2

私はWordpressのソースコードをピークに喜んでいました。私は彼らがカスタムurl機能をどのように管理しているのだろうと思っていましたが、実際にそれを得ることはできませんでした。Wordpressの "検索エンジンに優しい" URL(パーマリンク)の実装

wordpress .htaccessファイル内の書き換えルールは、すべての要求を単にindex.phpにリダイレクトします。その後

が、それは私には謎です:index.phpにリダイレクトされます一度、彼らはexample.com/this/title/is/cool/試合index.php?p=233 ?

答えて

3

を作るのですか、そのファイルはthis/title/is/cool部分であるかを判断するために$_SERVER['REQUEST_URI']を見て、その後、行くことができますたとえリダイレクトされた実際のページURLが最初の部分だけであっても、REQUEST_URIが完全なURI文字列をリストするので、データベースからどのページを検索するかを調べる。例えば

http://www.example.com/foo/bar/ 

はこれが実際にロードされているhttp://www.example.com/index.phpになります

http://www.example.com/index.php/foo/bar/ 

に書き換えますが、$_SERVER['REQUEST_URI']はその中のフル/index.php/foo/bar/を持つことになります。

いくつかのアプリはリライトがこのようなものになるように、彼らは、単に末尾に「ディレクトリ」を取ると、クエリ文字列にそれらを置くために.htaccessを使用して、別のアプローチを使用します。場合

http://www.example.com/index.php?path=/foo/bar/ 

提供されるパスは_GET['path']です。

+0

ありがとうございます!私はそれがそれのようなものかもしれないと思ったが、誰もがどこでもサーバ変数が利用できるとは思っていなかったので、それを否定した。 $ _SERVER ['REQUEST_URI']は実際にはすべての設定に存在する信頼できる変数ですか? – pixeline

+0

'$ _SERVER ['REQUEST_URI']'には完全なURIは含まれず、URIのパスとクエリのみが含まれます。 – Gumbo

+0

ありがとうGumbo。編集されました。 – Amber