1

見栄えの良い URL にリダイレクトするクエリ文字列を含むページを取得してから、その URL を取得して元のクエリ文字列に戻そうとしていますが、リダイレクトせずに (つまり、URL を変更せずに) リダイレクト ループが発生しています。 (明らかな理由で)しかし、私はこれを止める方法を望んでいました.

これは私のhtaccessファイルの私のコードです

#rewrite search querystring
    #/search/'apartment'/2_bedrooms/price_0-500000/town_W4/development_18,SW5/
        RewriteRule ^search/([^/]+)/([^/]+)_bedrooms/price_([^/]+)-([^/]+)/town_([^/]+)/development_([^/]+) /search.php?propertytype=$1&bedrooms=$2&minprice=$3&maxprice=$4&location=$5&development=$6 [NC]

    RewriteCond %{QUERY_STRING} propertytype=([^/]+)&bedrooms=([^/]+)&minprice=([^/]+)&maxprice=([^/]+)&location=([^/]+)&development=([^/]+)
    /search/$1/$2_bedrooms/price_$3-$4/town_$5/development_$6 [R,L]
    RewriteRule ^(.*)$ /search/%1/%2_bedrooms/price_%3-%4/town_%5/development_%6? [R,L]

つまり、ユーザーは次の場所に連れて行かれました。

http://www.domain.com/search/?propertytype=dev&bedrooms=2&minprice=0&maxprice=10000000&location=W1&development=W1

このページは、データの送信元であるサーバー上の実際のページですが、ユーザーに見てもらいたいです。

http://www.domain.com/search/dev/2_bedrooms/price_0-10000000/town_W1/development_W1/

リダイレクトループなしでこれを行うことは可能ですか?
ご協力いただきありがとうございます

編集書き換えフラグを使用して実行できると考えていますが、よくわかりません。書き換えエンジンは初めてです

4

1 に答える 1

1

編集

これがあなたのための完全な(そして実用的な)ソリューションです:

RewriteEngine On

# User gets here:
# http://localhost/search/?propertytype=dev&bedrooms=2&minprice=0&maxprice=10000000&location=W1&development=W1
# He is explicit redirected to here:
# http://localhost/search/dev/2_bedrooms/price_0-10000000/town_W1/development_W1/
# Internally, apache calls this:
# http://localhost/search.php?propertytype=dev&bedrooms=2&minprice=0&maxprice=10000000&location=W1&development=W1

RewriteRule ^search/([^/]+)/([^/]+)_bedrooms/price_([^/]+)-([^/]+)/town_([^/]+)/development_([^/]+) search.php?propertytype=$1&bedrooms=$2&minprice=$3&maxprice=$4&location=$5&development=$6 [NC,PT]

RewriteCond %{QUERY_STRING} propertytype=([^/]+)&bedrooms=([^/]+)&minprice=([^/]+)&maxprice=([^/]+)&location=([^/]+)&development=([^/]+)
RewriteRule ^search/(.*)$ /search/%1/%2_bedrooms/price_%3-%4/town_%5/development_%6/? [R,L]

.htaccess をサーバー ルートに配置し、ルートにもファイル search.php があることを前提としています。

オリジナル:

最初のルールでルールフラグ(http://httpd.apache.org/docs/current/rewrite/flags.htmlPT )を使用して書き換えることができると思いますQSA

サーバー側のリダイレクトに使用PTします (ユーザー/ブラウザーの URL は変更されませんが、サーバー側のスクリプトの URL は変更されます)。

QSAこのリダイレクト中にクエリを実行したい場合に使用します

既存のファイルを対象としないすべてのリクエストを特定の php-script にリダイレクトできます。次に例を示します。

RewriteCond
%{REQUEST_FILENAME} で RewriteEngine !-f
RewriteRule ^(.*)$ index.php?url=$1 [PT,QSA]

于 2013-02-05T02:07:19.363 に答える