3

クエリ文字列にいくつかのパラメーターがある見苦しい URL から、mod の書き換えを利用してきれいな URL に変更することに成功しました。しかし、私のサイトには多くの URL があります。戻ってすべてのアンカー タグの href 属性を編集するのではなく、古い URL を新しい URL に自動的にリダイレクトするリダイレクト関数を .htaccess ファイルに記述しようとしました。

私の .htaccess ファイルには、次のものがあります。

RewriteEngine On

Redirect teams.php?league=$1&team=$2&year=$3&tab=$4 teams/(.*)/(.*)/(.*)/(.*)

RewriteCond %{REQUEST_URI} !^(css|js|img)/
RewriteRule ^teams/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ teams.php?league=$1&team=$2&year=$3&tab=$4 [L]

運が悪いですが... 何か考えはありますか?

ありがとう

4

1 に答える 1

5

を含む古い URL が と照合して実際にリクエストされphpいることを確認する必要があります%{THE_REQUEST}。そうしないと、永遠にループがリダイレクトされます (たとえば、ユーザーが team.php にアクセスし、チームへのリダイレクトを提供し、ブラウザーがチームにリダイレクトし、サーバーが次のように書き換えます)。 team.php、サーバーは「teams.php」を認識してチームにリダイレクトし、ブラウザはチームを要求し、サーバーはteams.phpとして書き換えるなど)

RewriteEngine On

# redirect when the user actually requests for teams.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /teams\.php\?league=([^&]+)&team=([^&]+)&year=([^&]+)&tab=([^\ ]+)
RewriteRule ^teams\.php$ /teams/%1/%2/%3/%4? [R=301,L]

# internally rewrite any /teams/ URI
RewriteCond %{REQUEST_URI} !^(css|js|img)/
RewriteRule ^teams/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ teams.php?league=$1&team=$2&year=$3&tab=$4 [L]
于 2012-07-24T17:47:47.273 に答える