0

Apache の RewriteEngine は初めてで、SEO に適した URL を作成したいと考えています。user.php?id=37&activ=2 などの URL でサーバーにデータを送信しています。

.htaccess ファイルを変更して、次の内容を含めました。

ErrorDocument 404 /404.php

Options +FollowSymLinks

RewriteEngine On
RewriteRule ^id=([0-9]+)$ user.php?id=$1&activ=2

これですべて正常に動作しています。つまり、次のように入力して適切なページに移動できます。

root.com/id=35

正しいページを取得します。ただし、サイトの内部リンクをクリックして同じページを取得すると、古い user.php?id=35&activ=2 などの URL が取得されます。

内部リンクが「リライト」され、SEO フレンドリーに表示されるようにするにはどうすればよいですか?

4

1 に答える 1

0

ルール:

RewriteRule ^id=([0-9]+)$ user.php?id=$1&activ=2

着信リクエスト URI/id=123を取得し、必要に応じて内部的に に書き換え/user.php?id=123&activ=2ます。それだけです。動的コンテンツを魔法のように変更して、<a>href 内のリンクを新しいパターンに変換したり、ブラウザーのロケーション バーのコンテンツを魔法のように変更したりすることはありません。1 つのことだけを行い、それはある URI を別の URI に内部的に書き換えることです。

リンクが のように見えないように、すべてのコンテンツを変更する必要があります/user.php?id=123&activ=2。この点に関して、mod_rewrite でできることはまったくありません。これを変更しない限り、人々はあなたのリンクにカーソルを合わせて古い URL を見ることができます。

外部リンクをあるフォームから別のフォームに変更する必要がある場合は、次を使用できます。

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /user\.php\?id=([0-9]+)&activ=2
RewriteRule ^ /id=%2? [L,R=301]

これにより、クエリ文字列を含む URI が含まれていない URI に外部的にリダイレクトされます。

于 2013-08-12T18:19:26.917 に答える