URL の書き換え中に多くの問題が発生する可能性があることはわかっています。そのため、何をしているのかを完全に理解していない場合、Google は URL をクリーンな URL に変換しないことを推奨しています。
これが正しい方法であるかどうかを尋ねたいですか?
次のような構造のサイトがあります。
www.example.com/index.php?widget=blue&size=10&weight=50
mod_rewrite を使用して、クリーンな URL を次のように使用できるようにしています。
www.example.com/blue/10-inches/50-grams/
私は次のコードでこれを達成しました:
RewriteEngine on
RewriteRule ^([a-zA-Z-]+)/([0-9-]+)-inches/([0-9-]+)-grams/?$ index.php? widget=$1&size=$2&weight=$3 [NC,L]
これにより、この部分が機能します。ただし、インデックス ページには、ドロップダウン ボックスの選択と送信ボタンの押下に基づいて index.php ページの製品を変更するフォームもあります。
Dropdown 1 = blue, red, green
Dropdown 2 = 10, 20, 30
Dropdown 3 = 25, 50, 100
デフォルトでは、red、20、100 などを選択して [送信] をクリックすると、www.example.com/index.php?widget=red&size=20&weight=100 のような古い URL が表示されます。
ここでリダイレクトを行うにはどうすればよいですか? 私は現在、この方法でそれを行うことに取り組んでいます:
<form action="index.php" method="GET">
をに変更<form action="redirect-url.php" method="GET">
その新しい redirect-url.php には次のコードが含まれます。
<?php
header('Location: www.example.com/'.$_GET[widget].'/'.$_GET[size].'/'.$_GET[weight].'/');
exit();
?>
これにより、上で投稿したApache RewriteRuleが機能するようになります。
考え?これは機能しますか?よりクリーンな方法はありますか?