私は次のURLを持っています
http://domain/phpfile.php/something1-param1/something2-param2/somethin3-param3
へのhtaccessで書き換えることはできますか
http://domain/phpfile.php?something1=param1&something2=para2&something3=param3
また、パラメータは動的であり、1、2、3、または 4 にすることができます
私は次のURLを持っています
http://domain/phpfile.php/something1-param1/something2-param2/somethin3-param3
へのhtaccessで書き換えることはできますか
http://domain/phpfile.php?something1=param1&something2=para2&something3=param3
また、パラメータは動的であり、1、2、3、または 4 にすることができます
使用するだけです:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^phpfile.php/something1-([^/]+)/something2-([^/]+)/somethin3-([^/]+)$ phpfile.php?something1=$1&something2=$2&something3=$3 [QSA]
次に、コードで $_GET を使用します
パラメーターのリストが variableになり、ファイルにケースごとに個別のルールを含めたくない場合は、.htaccess
クエリ文字列全体をキャッチして内部で解析することもできます。
このようなものRewriteRule ^phpfile.php/(.*)$ phpfile.php?params=$1
(テストされていません) を使用して、php ファイルで次のようにクエリ文字列を手動で解析することができます。
<?php
#$_GET['params'] = 'something1-param1/something2-param2/somethin3-param3';
preg_match_all('/(\w+)-(\w+)/', $_GET['params'], $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
$_GET[$match[1]] = $match[2];
}
unset($_GET['params']);
var_dump($_GET);
?>
$_GET
これにより、個々のパラメーターとして渡されたかのように、キー => 値のペアを含むようにスーパーグローバルが設定されます。
この簡単なソリューションを使用できます
RewriteEngine On
RewriteRule ^phpfile.php(.*)/([^/-]+)-([^/]*)/?$ phpfile.php$1?$2=$3 [QSA]
好きなだけ多くのパラメータで動作します。
例:
phpfile.php/name-walter/age-30
なるphpfile.php?name=walter&age=30