1

index.php を使用して古い URL を取得し、新しいクリーンな URL にリダイレクトすることができました。

例: example.com/index.php?gender=m&height=70&weight=150 から example.com/men/70-inches/150-lbs/

ただし、index.phpを使用せずに他のURLを取得して、クリーンなURLにリダイレクトする方法をハックしようとしています

例: example.com/?gender=m&height=70&weight=150 から example.com/men/70-inches/150-lbs/

私の現在の index.php を使用した URL のリダイレクトは次のようになります。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?gender=m&height=([0-9-]+)&weight=([0-9-]+)
RewriteRule ^index\.php$ /men/%1-inches/%2-lbs/? [L,R=301]

index.php のない URL に対してこれを試しましたが、うまくいきません:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?gender=m&height=([0-9-]+)&weight=([0-9-]+)
RewriteRule ^/$ /men/%1-inches/%2-lbs/? [L,R=301]

問題は、Google が私のページの束をインデックスに登録したことであり、example.com/?gender=m&height=70&weight=150 それらすべてが 1 つのクリーンな URL を指している必要があります。

4

1 に答える 1

1

あなたは正しい考えを持っていますが、書き換えルールのパターンは機能しません: ^/$. htaccess ファイルのルールを介して送信された URI では、先頭のスラッシュが削除されているため、/URI は存在せず、空白になります。

# no slash---v
RewriteRule ^$ /men/%1-inches/%2-lbs/? [L,R=301]

したがって、全体は次のようになります。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?gender=m&height=([0-9-]+)&weight=([0-9-]+)
RewriteRule ^$ /men/%1-inches/%2-lbs/? [L,R=301]
于 2013-05-08T23:07:02.360 に答える