1

特定のphpファイルにマップするURLに9つ以上のパラメータがあります。URLは

http://abc.com/USA/NY/male/NY/all-status/all-religion/all-ethnicity/all-cast/all-professions/all-educations/recent_posted

私のhtaccessルールは

RewriteRule ^USA/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+ )/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ search.php?counterty=USA&state=$1&gender=$2&r_city= $3&r_mstatus=$4&r_religion=$5&r_ethnicity=$6&r_cast=$7&r_profession=$8&r_education=$9&sort_by=$10 [NC]

機能していません

誰でもこの問題を解決できますか? 適切な正規表現ルールと URL が必要です

4

2 に答える 2

6

このようなルールの作成は制限されており、悪い習慣です。さらに悪いことに、パラメータを検索スクリプトに渡すこともできません。スクリプトが進行するにつれて、USA以外の他のパラメーターを渡す必要がある可能性が高くなります。つまり、ルートごとに新しい書き換えが必要になります。

実際には、ルートを処理するために、URL全体をphpスクリプトに渡す必要があります。

RewriteEngine On
Options -Indexes
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?route=$1 [L,QSA]

このようにexplode('/',$_GET['route'])して、スクリプト内ですべてのルートパラメータの配列を取得できます。

于 2012-09-30T15:57:07.583 に答える
3

Gumboが言うように、すべてのロットをページに送信して処理します。

$segments = explode('/', $_SERVER['REQUEST_URI']);
    list($country, $state, $gender, [etc etc.]) = $segments;
于 2012-09-30T15:55:33.153 に答える