2

私は最初のステップを実行してurl-rewritingいますが、以下を機能させることができません:

?skin=some_id私のアプリケーションでは、アプリケーション内の任意のページにクエリ パラメータを適用することでスキンをロードできます。変わりたい:

 http://www.mysite.com/anypage.html?skin=123

の中へ:

 http://www.mysite.com/123/anypage.html

しかし、私はそれを機能させることができません。

これは私が現在持っているものですhttpd.conf

<IfModule mod_rewrite.c>
    RRewriteRule (.*)/(.*)?app=(.*)$ %1/%3/%2 [NC,R=301,L]
</IfModule>

質問:
これがうまくいかないので、何が間違っているのか知りたいですか?

また、URL が有効な場合、ユーザーが入力する URL は何ですか? http://www.mysite.com/123/anypage.htmlどの「マップ」しhttp://www.mysite.com/anypage.html?skin=123ますか?

また、クエリ パラメータにアクセスする場合、実際の URL ( ?skin=...) または書き換えられた URL から抽出する必要がありますか?

助けてくれてありがとう!

編集:
だから私はそれをこのようにやっています(ここで役に立つテスター):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} skin=(\w+)
RewriteRule ^.*\.html /%1? [R=301]
</IfModule>

これはリダイレクトします:

 www.some.com/index.html?skin=xyz   =>  www.some.com/xyz

まだ十分ではありません。

4

1 に答える 1

1

アプリケーションを別の方法でスキニングすることをお勧めします。現在の方法では、検索エンジンで重複コンテンツの問題が発生します。これは、サイトの各ページに、所有しているすべてのスキンの同じコンテンツが表示されるためです.

つまり、yoursite.com/dark/about.htmlと同一のコンテンツにyoursite.com/spring/about.htmlなるため、検索エンジンはどのバージョンを使用するかを判断するのに苦労する可能性があります。さらに、適切なパスとスキンを使用するためにプログラムでリンクを作成する必要があるため、サイトの他のページにリンクするための余分な作業が発生するようです.

スキンをアクティブ化するための URL を用意し、その設定を Cookie またはセッションに保存し、Cookie/セッションの値に基づいてサイトをスキンし、1 セットの URL のみを維持します。

本当にスキンを URL に含めたい場合を除き、使用するスキンを示すために URL やクエリ文字列を使用することは避けます。代わりに、アカウントに関連付けられているか、Cookie に保存されている設定にします。

于 2013-05-10T00:25:17.383 に答える