2011-11-06 23 views
0

うまくいけば、あなたの一部の.htaccess gurusが私の手助けをすることができます。私はいつも.htaccessであちこちに乱れていたことがないので、少し失われています。URLの書き換えで外部情報を使用するにはどうすればよいですか?

基本的に私はリンクがhttp://example.com/directory/3またはそれらに沿って何かに変換されるように、私は簡単にそれを変更することができ、そのような example.com/index.php?id=3としてリンクを取り、http://example.com/pagename/

に変換したいです私が探している変化を人々がどのように達成するのかは分かりません。私はWordpressがURLと似たようなことをしていることは知っていますが、投稿者の名前情報にどのようにアクセスしていますか?

答えて

0

Wordpressのはindex.phpにファイルやディレクトリとして解決しない、すべてを書き換えることにより、それをしない、それは次のようになります。

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

そしてindex.phpを要求されたURIを読み取り、と何をするかを割り出しそれ。同時に、wordpressはこれらのURLが書き換えられることを知っているので、http://example.com/pagename/のようなきれいなSEOフレンドリなURLを持つページをレンダリングします。ご例えば

は、自身mod_rewriteはあなたが個々RewriteRulesの束をハードコーディングしない限り、 ID = 3ページ名に相当していることを知ることができるようになるだろうされていません。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /index.php?page=$1 [L] 

今それはあなたのコンテンツにきれいなSEOフレンドリーなURLを生成する次第です:あなたはそれがページ名を受け入れるindex.phpを作る何ができるので、あなたのルールは次のようになります。コンテンツマネジメントシステムでは、ページ自体は通常、ある種類のIDでデータベースに格納されます。 2011年10月10日に作成されたID「5」のページ「テストページ」を作成します。CMSがリンクを生成する必要がある場合、データベースを検索し、リンクを/2011/10/Test_Pageとして作成します。

トップページに行くと、index.phpはすべてのページへのリンクを生成し、 "テストページ"のリンクには/2011/10/Test_Pageと表示され、誰かがそのリンクをクリックすると、 RewriteRule ^([0-9]+)/([0-9]+)/(.+)$ /index.php?year=$1&month=$2&title=$3 [L]を入力してURLを/index.php?year=2011&month=10&title=Test_Pageに書き換えます。 index.phpスクリプトはデータベース内で正しいページを探し、それをブラウザに返します。これは、CMSごとに異なる予定です。本質的に、.htaccessはあなたのデータベースに格納されているものを知りませんが、必要な情報( "id"や "page"など)がスクリプトに渡されるようにリンクを書き換えることができます。 を返すページを決定して、そのページでクリーンなSEOフレンドリなリンクを生成することは、スクリプトに任されています。

+0

さて、私はWPルートに行き、すべてを 'index.php'に書き直すことにしました。私はまだ、URLを何かクリーナーに書き換えることができるかどうかはまだ分かりません。私はWordpressの 'rewrite.php'ファイルを見て、どのようにしているのか見てみましたが、複雑なCMS内の2000行のファイルに隠れていると難しい概念を理解するのは容易ではありません。 –

+0

私の編集を参照してください。それはまったくあなたにきれいなSEOフレンドリーなリンクを生成する方法です。これは.htaccessやApacheの一部ではありません。 –