2017-01-04 8 views
1

私はワードプレスページをどこかにリダイレクトする必要があります。htaccess redirect GET /?param = str to example.com/somewhere

http://example.com/?na=s 

http://example.com/somewhere/ 

に私はこれを試してみましたが、それは動作しません。

RewriteCond %{QUERY_STRING} !^na=s$ 
RewriteRule !^/$ http://example.com/somewhere/? [L,R=301] 

全ファイル

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
RewriteCond %{QUERY_STRING} !^na=s$ 
RewriteRule ^/$ http://example.com/somewhere/? [L,R=301] 
</IfModule> 
+0

タイトルの「Htacess」は入力ミスですか? – MrWhite

答えて

1

開始のために、あなたの「リダイレクトするには、」既存のWordPressの書き換え前に、あなたのファイルの先頭に行く必要があります。 WPフロントコントローラーはすべての要求をキャッチしますので、リダイレクトは決して処理されません。しかし、あなたはまた、を使用しているしている

RewriteCond %{QUERY_STRING} !^na=s$ 
RewriteRule ^/$ http://example.com/somewhere/? [L,R=301] 

(つまり!プレフィックスが何をするかだ)正規表現を否定するので、クエリ文字列が ない ^na=s$ときにはマッチします。ディレクトリごとの .htaccessファイルに

また、ディレクトリの接頭辞がRewriteRuleパターンで一致したURLパスから削除されますので、^/$が一致することはありません。 (あなたは「完全ファイル上記のスニペットで!^/$を持っていたが?)

前に、既存の書き換え、次のことを試してみてください。

RewriteCond %{QUERY_STRING} ^na=s$ 
RewriteRule ^$ http://example.com/somewhere/? [R=301,L] 

は、任意の(誤った)ので、あなたは、ブラウザのキャッシュをクリアしていることを確認します301sはブラウザで厳しくキャッシュされています(キャッシングを無効にしてテストしやすく、正常に動作することが確認できるまで302を使用する方が簡単です)

+1

ありがとう説明。あなたから多くを学ぶ。 –