2

ダーティな URL をクリーンな URL にリダイレクトするには、本当に助けが必要です。

ダーティ URL:creative.php?beast=

クリーン URL: /mythical-creature/

現在、私の .htaccess は次のようになっています。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mythicalcreatureslist.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www.mythbeasts.com [NC]
RewriteRule ^(.*)$ http://www.mythicalcreatureslist.com/$1 [L,R=301]

RewriteRule ^menu/([A-Za-z0-9-+]+)/?$  menu.php?menu=$1  [NC,L]
RewriteRule ^menu_two/([A-Za-z0-9-+]+)/?$  menu_two.php?menu=$1 [NC,L]

RewriteRule ^mythical-creature/([A-Za-z0-9-+\'%]+)/?$  creature.php?beast=$1  [NC,L]

これにより、ブラウジング時に Web サイトにきれいな URL が表示されます。これは素晴らしいことです。ただし、古いダーティ URL は、URL バーに入力してもリダイレクトされません。

例: モンゴリアン デス ワーム http://www.mythicalcreatureslist.com/creature.php?beast=Mongolian+Death+Worm

リダイレクトさせたい: http://www.mythicalcreatureslist.com/mythical-creature/Mongolian+Death+Worm

これにより、コンテンツが重複しています。私が試してみました:

RewriteRule ^/mythical-creature/([A-Za-z0-9-+\'%]+)/?$  http://www.mythicalcreatureslist.com/creature.php?beast=$1 [R=301,NC,L]

しかし、それがしたことは、汚れたものを常に使用することでした.

それから私はそれをひっくり返しました:

RewriteRule  ^creature.php?beast=([A-Za-z0-9-+\'%]+)/?$ http://www.mythicalcreatureslist.com/mythical-creature/$1  [R=301,NC,L]

しかし、それはブラウジング中に 404 を引き起こし、アドレスバーに入力したときに古いダーティ URL をリダイレクトしませんでした。

4

1 に答える 1

1

正規表現が空のクエリ パラメータ値と一致しませんでした。+ を * に反転

RewriteRule ^/creature.php?beast=([A-Za-z0-9-+\'%]*)/?$ http:// www.mythicalcreatureslist.com/mythical-creature/$1 [R=301,NC,L]

先頭のスラッシュも追加されていることに注意してください

于 2013-01-01T12:35:09.470 に答える