2017-09-29 10 views
-1

複数のパラメータを取ることができるURLの項目に基づいてリダイレクトしたい。私のソースURLはモデルに変数値を取得するために取得する代わりにリダイレクトして使用する

http://mywebsite/2623-Sq-Ft-Office-for-Rent-In-Pinnacle-Business-Park-Prahlad-Nagar-Ahmedabad-For-Rs-1.44-Lakh-Per-Month-prid-5102 

ある

私のターゲットURLは

http://mywebsite/views/propertyview.php?property_id=5102 

PRID-5102とPROPERTY_ID = 5102は同じを参照し、5103、5104や5105などのように異なる値を取ることができますに。基本的に私はpridの前にすべてを無視して、ターゲットURLを指し、pridの後の数値をターゲットURLに渡したいと思う。

には、以下の動作しているようですが、私は、これはそれが

の.htaccess

RewriteRule ^(.*)prid-([0-9]+)$ views/propertyview.php?property_id=$1 [NC,L] 

PHPのモデルを行うには正しい方法であれば(爆発使って意見をもらう代わりに取得したいです)

$c = explode('prid-',$_SERVER[ 'REQUEST_URI' ]); 
$result = explode('/', end($c)); 
echo $result[0]; 
+0

私はこのRewriteRule ^(。*)prid - ([0-9] +)$ views/propertyview.php?property_id = $ 1 [NC、L]は働くことはできません。あなたは$ 1の代わりに$ 2を使用する必要があります。一致する条件を^。* prid - ([0-9] +)$ – Webdesigner

+0

に変更する必要があります。まず、.htaccesとmod-rewitreでこれを解決したいと思っています...今、PHPソリューションを探しています...あなたは本当に何を望みますか? – Webdesigner

+0

@Webdesignerその仕事はあなたが好きなものを信じることができる – Pichai

答えて

1

クエリ文字列ではなく、リクエストされたURIに基づいて書き直さなければなりません(これは?の後ろにあります)。

次に、基準を少し一致させるように修正します。 prid-([0-9]+)は、 "prid-"という単語の後に、1つまたは無制限の数字があなたのURIにあるのあとに続くことを意味します。これは、数値が最後にある場合にのみ有効です。これは、一致条件(^。*はオプションですが、暗黙的にそこにあります)に明示的に($は文字列の終わりを意味します)

数値には最小値が必要です。と最大。長さ私はこれをマッチング基準{min、max}(例えば、min = 1、max = 4は{1,4}とする)にも入れます。数字が正確に4桁でなければならない場合は{4}としてください。それがリレー1でなければならないか、または+が無制限であるべきである。

\dおよび[0-9]は同じことを意味する。

あなたは本当に[NC]フラグが必要かどうかはわかりません。なぜなら、 "prid-"は常に小文字であれば、それを削除することができます。

[QSA]フラグを追加すると、元のURLにも含まれる可能性のある他のクエリ文字列も書き換えパスに渡されます。 /real-long-uri-string-with-prid-1234?parameter=value。 この場合、/views/propertyview.php?property_id=1234&parameter=value

RewriteCondの一致条件を使用したいので、%記号ではなく、$記号を使用する必要があります。だから、全体のことは、今のようになります。

RewriteCond %{REQUEST_URI} ^.*prid-(\d{1,4})$ [NC] 
RewriteRule ^.*$ /views/propertyview.php?property_id=%1 [QSA,L] 

をURIものRewriteRule自身で選択することができますので、我々は 1行でそれを行うことができます(今は$を使用する必要があります):

RewriteRule ^.*prid-(\d{1,4})$ /views/propertyview.php?property_id=$1 [QSA,NC,L] 

EDIT: この答えは、この質問の前のバージョンを指し:トピックに今https://stackoverflow.com/revisions/46481496/4は完全に変更されました。

関連する問題