古いサイトのURLから新しいサイトのURLにリダイレクトしたい。 私はhtaccessファイルに多くのルールを持っています。 下記の例を参照してください。htaccessで定義されたすべての書き換えルールにクエリーを追加する一般的な書き換えルール
RewriteRule ^blog/one$ http://www.newsite.com/blog/x/ [R=301,L]
RewriteRule ^blog/two$ http://www.newsite.com/blog/y/ [R=301,L]
RewriteRule ^blog/three$ http://www.newsite.com/blog/z/ [R=301,L]
and so on..........
リダイレクトは正常です。 ここで、すべての宛先URLにクエリ文字列"?key = value & anotherKey = anotherValue"を追加します。 1行のコードでこの作業を行う方法はありますか? または、このクエリをすべてのURLに1つずつ追加する必要がありますか?ここで
は、私が欲しいの例である:
RewriteRule ^blog/one$ http:www.newsite.com/blog/x/?key=value&anotherKey=anotherValue [R=301,L]
EDITED: 完全htaccessファイル:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
#Custom redirection Starts form here
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^.*$ $0?key=value&anotherKey=anotherValue [L,NC]
#home page redirection
RewriteRule ^$ http://newsite.com/ [R=301,L]
#Blog Rewrite Rules
RewriteRule ^blog/this-blog-is-included-for-redirection/?$ http://newsite.com/blog/ [R=301,L]
#Custom redirection ends here
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
私はこのURLにアクセスします。 oldsite.com/blog/this-blog-is含まれるリダイレクト/
リダイレクト先: newsite.com/blog/?key=value & anotherK ey = anotherValue
これは問題ありません。私はこのURLにアクセスすると
は: oldsite.com/blog/this-blog-is-: oldsite.com/blog/this-blog-is-exluded-for-redirection/
それにリダイレクトexluded-for-redirection /?key = value & anotherKey = anotherValue
ここではクエリを追加しません。
ルールが働いています。私はすべての目的地のURLに1つまたは数行のコードでクエリ文字列を追加したい。これを行う方法はありますか? –
これは 'http://www.newsite.com/blog/x/?param1 = x&param2 = y'' [R = 301、L、QSA]のようにすることができます。 –
'^blog/one'すべてのブログで '/ blog/$ 1?key = ...'に書き換えるには '/ block /(.*)'を使うことができます。あなたがリダイレクトを持っていて、書き換えをしていないという問題があるので、無限ループが発生し、正規表現を洗練したり、条件を追加したりする必要があるかもしれません。 – apokryfos