0

この書き換え方法は機能しますが、新しい URL への書き換え/リダイレクトを URL に強制するわけではありません。

私はこれを使用します:

RewriteEngine on
RewriteRule ^page/([^/\.]+)$ search.php?q=$1 

書き換えられた URL (プロジェクト/ページ/など) にアクセスできますが、古い URL/リンク (search.php?q=etc) にはリダイレクトなしでアクセスできます。

注:私は$_SERVERバリアントを使用してURLを作成し、localhostで使用します。

4

3 に答える 3

4

プロジェクト/ページを search.phpに書き換える必要がありますか? 醜いURLを隠すために。

そしてsearch.phpをリダイレクトしますか?正規の URL をそのリソースにアクセスする唯一の方法にするために、プロジェクト/ページに。

あなたのコードにはリダイレクトについての言及はありません。あなたはただ書き直しています。

このように考えてみてください

  • rewrite は、正規の URL の背後にある醜い URL を隠します (それらを隠しますが、それらを排除するわけではありません)。
  • リダイレクトは、「search.php? はプロジェクト/ページに移動しました。代わりにそのリンクを試してください」のようなメッセージでブラウザーに応答し、ブラウザーは新しいリンクに従います。
于 2012-05-25T21:52:03.340 に答える
1

いわゆるugly URLsSEO フレンドリーな URL にリダイレクトするには、別の書き換えルールが必要になります。.htaccess コードを次のようにします。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^page/([^/\.]+) search.php?q=$1 [L,QSA,NC]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search\.php\?q=([^\s]+) [NC]
RewriteRule ^ page/%1? [R=302,L]

正常に動作することを確認したら、 に変更R=302R=301ます。

于 2012-05-25T22:20:35.983 に答える
-2

[R=301]クライアント側のリダイレクトにするには、書き換えルールが必要です。それ以外の場合は、純粋に内部的な書き換えであり、クライアントは URL が変更されたことを認識しません。

例えば

RewriteRule ^page/([^/\.]+)$ search.php?q=$1 [R=301,L]
于 2012-05-25T21:59:46.170 に答える