2017-03-22 16 views
2

サイトURLの構造をsite.com/?team=john-doeからsite.com/attorney/john-doeに変更する途中です。私は典型的なWordPressのHtaccessのhtaccessファイルのルールを書き換えているが、何が問題になっているのかは、?team=の後ろにある複数の弁護士がいるということです。私は名前が変数であるすべてをリダイレクトするための1つのルールを実行しようとしています。 I以下PHP:可変クエリ文字列を含む書き換えルール

site.com/?team=jane-doe 
site.com/?team=nic-cage 

方法をコメントアウトが、私はそれをしようとしたとき、私は500内部サーバーエラーが発生しました:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

#RewriteCond %{REQUEST_URI} ^/$ 
#RewriteCond %{QUERY_STRING} ^?team=([x]*)$ 
#RewriteRule ^(.*) site.com/attorneys/$1 [R=302,L] 
</IfModule> 

# END WordPress 

私もこの正規表現を適用:

RedirectMatch 301 ^/?team=(.*)$ site.com/attorneys/$1 

正規表現は、かなり混乱しています申し訳ありませんが、私は意味を作っていません。私は必要に応じて試してみることができます。

答えて

0

私はあまりわからないですが、あなたはこの
RewriteRule ^/?team=(.*)$ http://Yoursitename/attorneys/$1 [R=301,L]

+0

おかげで - 私は営業時間後に、この打撃を与えるだろう。報告する! – Jose

+0

それはあなたのために働いたのですか? –

+0

こんにちは@Ankit Prajapati最後の解決策は 'RewriteCond%{QUERY_STRING}^team =(。*)$ でした。RewriteRule ^(。*)https://www.andrewsmyers.com/attorneys/%1?[R = 301、L] ' – Jose

1

に、RedirectMatchだけ。あなたは、このディレクティブを使用してクエリ文字列にアクセスすることはできませんのURIのために働く試すことができます。あなたのワードプレスのルールの前にこれを追加し、次のRewriteRuleを使用することができます。

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^team=(.+)$ 
RewriteRule^http://example.com/attorneys/%1? [L,R] 
+0

ありがとうございます - 私は営業時間後にこれを打ち明けます。報告する! – Jose

0

これは単なる推測ですが、私は

RewriteCond %{QUERY_STRING} ^?team=([x]*)$ 

には 500サーバーの理由である大手疑問符 ?を考えますエラーは、 ?が特殊文字であるためです。

?は、先行要素がオプションであることを意味しますが、^?team=に先行要素がないため、これはエラーです。リテラルの疑問符と一致させる場合は、バックスラッシュ\?でエスケープする必要があります。

QUERY_STRINGこの場合(QUERY_STRING)、これは必須ではありません。QUERY_STRINGにはクエリー文字列自体が先頭の疑問符が含まれていないためです。これはteam=(.*)をチェックすることは十分であろう意味

RewriteCond %{QUERY_STRING} ^team=(.*)$ 

  • RewriteRule ^(.*) site.com/attorneys/$1 [R=302,L]site.comにリダイレクトされません

    • RewriteCond %{REQUEST_URI} ^/$だけのホームページにマッチするルール、何もないと、追加の問題があります、欠けているのでhttp://
    • とfinall Y、RewriteCondで試合のための後方参照は%1代わりの$1
  • +0

    あなたの記述的な対応に感謝します。だから私は自分のルールをあなたが提案したものに更新しました。現在、新しい宛先URLに '?team = john-doe'が追加されています。例、 'http://www.example.com/attorneys/?team = john-doe' – Jose

    +0

    はい、私はそれを逃しました。私の答えはちょうど、あなたが500エラーを得る理由を説明します。しかし、@starkeenはすでにターゲットに疑問符を付けることで、この問題を解決しました。これにより、前のクエリ文字列が新しいターゲットに追加されることがなくなります。 –

    関連する問題