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用に解決する必要があります。
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++;
}
}