web-dev-qa-db-ja.com

ユーザーの選択に応じてURLを動的に書き換えます-可能ですか?

PHPベースのWebアプリケーションには、ユーザーの選択に従ってURLを生成するフォームがあります。フォームには7つの異なるフィールドがあり、それぞれが最終URLに影響しますが、いずれも必須ではありません。

最終URLは次のとおりです。

/ field1/user_setting_of_field1/field3/user_setting_of_field3/field6/user_setting_of_field6 /

あるいは単に:

/ field4/user_setting_of_field4

これらのURLは

/results.php?field1=user_setting_of_field1&field3=user_setting_of_field3&field6=user_setting_of_field6

そして:

/results.php?field4=user_setting_of_field4

これらのバリエーションをカバーする単一の書き換えルールを作成することは可能ですか?考えられるすべてのシナリオに対して異なる書き換えルールを作成するのは嫌です。それは永遠にかかります...

現在、IIS 7.5を使用してWindowsマシンでアプリを開発していますが、最終的にはApacheサーバーに展開します。

両方で可能ですか?現在、IIS環境用に、そして後でApache用に解決する必要があります。

4
jitzo

From https://stackoverflow.com/questions/117931 次の書き換えルールを使用して、URL全体をスクリプトに転送します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

次に、index.phpスクリプト内で 'q'パラメーターを取得し、スラッシュで分割します。値をマップに入れます。

$pathmap = ();
if ($_GET["q"]){
    $path = split("/", $_GET["q"]);
    for ($i=0; $i+1<count($path); $i++){
        $pathmap[$path[$i]] = $path[$i+1];
        $i++;
    }
}
2