2011-01-04 8 views
3

私は新しいウェブサイトのワードプレスの完全に良い(これまでの)セットアップを持っています。かなりのURLは期待どおりに働いています。WordpressカスタムQuerystrings&Pretty URL - どのように?

私は、クエリ文字列に応じて、コンテンツをロードする1つの動的ページがあります:私は変更がない.htaccessファイルを変更するだけでなく、このURLは、「きれい」にしたいが、すべてのタイム

/dynamic/?loc=england&code=uk 

を。すべてを試して、他のすべてのものを捜した - 最後の手段。私が働くために次のものを得ることができたら、私は幸せになるでしょう。

は、私のようなURLの外観を作成する必要があります。

/dynamic/location/england/code/uk/ 

これを任意の.htaccessに追加すると、ウェブサイト全体が壊れます。

RewriteRule /dynamic/(.*)/(.*)/(.*)/(.*)/$ /dynamic?$1=$2&$3=$4 

何が欠けていますか。事前

N

+0

あなたは '/ダイナミック/場所/イングランド/コード/英国/'を訪問したり、単にきれいではありませんページにリフレッシュされてみましたか?後でロード書き換えルールを分析する場合 – andrewk

答えて

11

おかげで、あなたの.htaccessファイルに書き換えルールを追加しないでください。 WordPressはあなたのためにそのファイルを管理します。できるだけ、いつでも組み込み機能を使用してみてください。

WordPressは実際にやや高度なrewrite engineその船の標準を持っている - そしてそれはちょうどプラットフォームの残りの部分のようにプラグイン可能です。

トリックは、しかし、それに取り組んでいます。 RegExを登録する必要がありますので、WordPressは一致する文字列の種類を知っています(dynamic/location/(.*)/code/(.*) =>/dynamic?$loc=$1&code=$2)。次に、送信を処理するために、バックエンドにページとスクリプトを設定する必要があります。同様の例については

は、私はカスタムポストはWordPress AnswersにオーバータイプのカスタムURLを解析し、受信した答えを見てください。この拡張は、次のようなコードに設定する必要があります(注:テストされていないの!!!):

<?php 
add_action('init', 'add_my_rewrite'); 

function add_my_rewrite() { 
    global $wp_rewrite; 
    $wp_rewrite->add_rule('location/([^/]+)/code/([^/]+)','index.php?loc=$matches[1]&code=$matches[2]','top'); 
    $wp_rewrite->flush_rules(false); // This should really be done in a plugin activation 
} 

この自動的.htaccessファイルに書き換え構造を追加する必要があります。

+0

また、私は非常にお勧め[月ファブリー書き換えアナライザプラグイン](http://wordpress.stackexchange.com/questions/3606/a-tool-to-analyze-rewrite - ルール)。 – EAMann

+0

ニースの答えは、ちょっとこの質問を少し展開することです:Theresの変換方法:http://www.mysite.lh/?user = josoromaをhttp://www.mysite.lh/josoromaに事前に感謝します。 –

+0

私は、これらの書き換えルールを正常に動作させるために多くの問題を抱えていました。正規表現の '([^ /] +)'フォーマットが私のために働いていました。ありがとう! – Gavin

関連する問題