.htaccess リダイレクト、古い汚れた URL からパラメータ付きの新しいきれいな URL へ

.htaccess リダイレクト、古い汚れた URL からパラメータ付きの新しいきれいな URL へ

次の2つのリンクがありますが、.htaccessルールはよく分かりませんまだ

Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111

古い URL から新しい URL へのすべてのトラフィック (パラメータcharity_id&を含むproject_id) が必要です。

.htaccess ルールを学ぼうとしているのですが、オンラインのチュートリアルがやや曖昧です。

.htaccess ルールについて簡単な説明をいただきたいです。

(人に魚を与えれば、その人は一日は食べられる。人に魚の釣り方を教えれば、一生食べさせられる)。

正解は、シンプルで役立つ説明(できればルールも)が付いた答えになります。

答え1

.htaccess ルールの設定方法を学ぶには、少なくとも多少の正規表現のスキルが必要であり、mod_rewrite Apache モジュールを自信を持って使用できる必要があります。mod_rewrite は柔軟性が高いため、書き換えルールの構築に便利です。

もしそうなら、コードは次のようになります

RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]

Apache 2.4 の mod モジュールは、以下のとおりです。(Apache バージョン 2.4 の場合は、該当する場合は別のバージョンを選択してください) は便利なリファレンスとして利用できるので、上記のコードをよりよく理解するためにも、そこから始める必要があります。

at は書き換えのブリックとして考えることができます。そのため、すべてのルールで少なくとも 1 回は使用されます。環境変数を確認したり、コードの一部のようにクエリ文字列の値を参照したりする必要がある場合は、RewriteRulebefore を追加します。RewriteCond

前の文字列から置換文字列にバック参照を配置するには、 from からto の値RewriteCondを使用します 。文字列自体の最初の部分からのバック参照が必要な場合は、 to を使用します。%1%9RewriteRule$1$9

置換 URL の末尾の疑問符記号に注意してください。これはクエリ文字列をスキップする方法です。この記号がない場合、?charity_id=885&project_id=18111新しい URL の末尾に疑問符が付きます。

答え2

別の投稿では、sysadmin1138 が mod rewrite に関する非常に優れた紹介を書いています。

投稿を見つけることができますここ

/編集: 例:

old: http://example.com/path?var=val 
new: http://example.com/path/var/val

.htaccess

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

関連情報