1

動的URL(下記)を少し異なる構造に書き直そうとしました。動作しないか、正しいかどうかわかりません。

  • 古いURL(URL#1):index.php?lang = AAA&zone = BBB&city = CCC&str = DDD&search = EEE
  • 新しいURL(URL#11):index.php?lang = AAA&country = BBB&place = CCC&street = DDD

*基本的に名前が変更され、「検索」文字列は重要ではなくなりました

  • 私が達成しようとしているのは、すべての訪問者を(古い)動的URL#1から(新しい)動的URL#11にリダイレクトすることです

2番目のステップでは、すべての検索エンジンが新しいURLを表示し、非sef URLでより簡単なすべてのテストを終了した後、URL#11をURL#2に書き換えます。

  • 新しいURL(URL#11):index.php?lang = AAA&country = BBB&place = CCC&street = DDD
  • Sef URL(URL#2):/ AAA / BBB / CCC / DDD

私はapacheプログラミングにあまり精通しておらず、私のソリューションが機能する場合でも、それが正しいものであるかどうか、または特定のURLでエラーが発生するかどうかはわかりません。ステップ1のリダイレクトを実行する.htaccessファイルと、後で使用するSEFURL用の別の.htaccessファイルを作成する際に役立つ情報があれば幸いです。ありがとう!

4

3 に答える 3

1

http://example.com/index.php?lang=AAA&zone=BBB&city=CCC&str=DDD&search=EEE

リダイレクト先:

http://example.com/AAA/BBB/CCC/DDD

サイレントにマッピング:

http://example.com/index.php?lang=AAA&country=BBB&place=CCC&street=DDD

ルートディレクトリの1つの.htaccesファイルでこれを試すことができます。

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} lang=([^&]+)&zone=([^&]+)&city=([^&]+)&str=([^&]+)&search=  [NC]
RewriteRule .* /%1/%2/%3/%4?   [R=301,L,NC]

RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?  [NC]
RewriteCond %{REQUEST_URI} !index\.php                          [NC]
RewriteRule .* /index.php?lang=%1&country=%2&place=%3&street=%4 [L,NC]

クエリに次の形式のパラメータが含まれている場合: 、両方のルールにB%nnフラグを追加してみてください 。例:[L、NC、B]。

于 2013-03-26T06:34:12.970 に答える
0

変数が小文字と数字のみで構成されていると仮定して、次のことを試してください。

RewriteRule ^/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)$
    /index.php?lang=$1&country=$2&place=$3&street=$4
RewriteCond %{QUERY_STRING}
    ^lang=([a-z0-9]+)&zone=([a-z0-9]+)&city=([a-z0-9]+)&str=([a-z0-9]+)&search=[a-z0-9]+$
RewriteRule ^index.php$
    /index.php?lang=%1&country=%2&place=%3&street=%4 [R=permanent]

(改行があってはならないことに注意してください。ただし、このWebページでブロックを読みやすくするために、ここにインデントを付けて挿入しました。)

于 2013-03-25T19:17:40.003 に答える
0

これがfaaからの(最初のステップで)機能したコードです:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} lang=([^&]+)&zone=([^&]+)&city=([^&]+)&str=([^&]+)&search=  [NC]
RewriteRule .* /index.php?lang=%1&country=%2&place=%3&street=%4 [L,NC]
于 2013-03-26T16:35:57.903 に答える