2016-05-13 1 views
1

私は.htaccessファイルでのRewriteRuleを書き込もうが、私はからリダイレクトしようとする課題のRewriteRuleは、ID =

ありますに

blog/entrada.php?id=2 

/blog/3D-touch 

をこれは私が試した複数のものの1つで、動作しません。

RewriteRule ^blog\/entrada\.php\?id=2$ /blog/3D-touch [L,R=301] 

私のルールに何が間違っていますか?効果的にリダイレクトする方法

おかげ

このコードから

答えて

2

クエリ文字列はのRewriteRuleディレクティブでの試合の一部ではありません、クエリ文字列をリダイレクトするには、次のいずれかのオプションのRewriteCondを使用する必要があります。

オプションを1

RewriteEngine on 

RewriteCond %{THE_REQUEST} /blog/entrada\.php\?id=2 [NC] 
RewriteRule^/blog/3D-touch? [NC,L,R] 

オプション2

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^id=2$ [NC] 
RewriteRule ^blog/entrada\.php$ /blog/3D-touch? [NC,L,R] 

空の疑問符を使用していますか?ターゲットURLの最後に古いクエリ文字列を破棄します。そうでない場合、これらのクエリ文字列はデフォルトでターゲットURLに追加されます。

リダイレクトを永続化したい場合は、R = 301に変更します。

+0

2つのオプションがうまく機能します。オプション1でRewriteRuleなぜ書くか^あなたはそれを説明できますか? – segon

0

使用

RewriteRule blog/(.*) blog/entrada.php?id=$1 

このコードは、ブログを持っているすべてのURLをリダイレクトします//entrada.phpをブログにして$ _GET [「ID」に/ブログの値の後に置きます]

あなたは、コードのnあなたのhtaccessファイルの先頭位置以降している必要があり

Options +FollowSymLinks 
RewriteEngine on 
+0

私はあなたの答えを理解していません。私はblog/blog/entrada.phpにあるすべてのURLをリダイレクトしたくありません。私はblog \/entrada \ .php \?id = 2から/ blog/3D-touchへ、または同じ3D-touch.php(私は取り除くための別のルールがあるので) php) – segon

+0

実際にユーザーが/blog/3D-touch.phpリクエストを入力したときにblog \ entrada.php?id = 2に移動しますか? –

+0

blog/entrada.php?id = 2は存在しません。これがリダイレクトしたい理由です – segon