2012-01-24 16 views
0

これを行う方法について時間を検索しています。htaccess query_string文字列が特定の値と等しい場合にのみリダイレクト

URLに渡される文字列パラメータに基づいて、特定の訪問者を自分のサイトの別のページにリダイレクトしようとしています。 exmapleについては

、私は&テスト= 1

をmysite.com/msn/index.php?src=msnにリダイレクトされるURLのmysite.com/index.php?src=msn &テスト= 1にしたいです

通常のサイト訪問者は、リダイレクトされずにindex.phpページにアクセスする予定です。クエリ文字列が設定した値と一致する場合にのみリダイレクトする必要があります。ここで

は私のコードです:

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{QUERY_STRING} ^src=msn(.*)$ 
RewriteRule ^(.*)$ http://www.mysite.com/msn/ [L] 

私はURLのmysite.com/?src=msn &テスト= 1に行く時には、上記のコードは動作しますが、それはmysite.com/indexのために動作しません。 php?src = msn & test = 1。私がindex.phpを入力すると、どのように動かすことができるのか?

ありがとうございました。

EDIT :::

私はまた私の.htaccessファイルに以下の規則があります。

ErrorDocument 404 /error404.php 

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

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.mywebsite.com/$1 [R=301,L] 

最初は404リダイレクトされ、第二はWordPressファイルの変更で、最後の力のすべてページはhttp://wwwとなります。

+1

あなたはhtaccessファイル内の他のルールを持っていますか? –

+0

Ulrich、元の投稿を更新して、.htaccessファイルの他のルールを表示しました。 – user1167727

答えて

0

このライン

のRewriteRule ^のindex.php $ - [L]

は、さらなる処理からのindex.phpを防止します。

最も簡単な解決策は、以下のように先頭に新しいルールを移動することです(私は彼らがすべて同じ.htaccessファイルであると仮定)

ErrorDocument 404 /error404.php 

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase /blog/ 

#rule to add www to domain 
RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.mywebsite.com/$1 [R=301,L] 

#new rule to redirect based on query string param 
RewriteCond %{QUERY_STRING} ^src=msn(.*)$ 
#unless it is already msn 
RewriteCond %{REQUEST_URI} !^/msn/ [NC] 
RewriteRule ^(.*)$ http://www.mysite.com/msn/ [L,R] 

#rules for blogs 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
+0

ありがとうございました。 .htaccessについての私の基本的な理解についてお詫びしますが、私が今問題としているのは、私がリダイレクトしているページにルールが適用されないようにすることができないため、無限ループに入っています。 これを修正する方法はありますか? – user1167727

+0

@ user1167727これを防ぐための追加条件を追加しました –

+0

ありがとうございます、それは完璧に動作します! – user1167727

関連する問題