Из. Я нашел много ресурсов по преобразованию определенных строк URL (domain.com/?hello=world в domain.com/hello/world), но мне нужен способ динамического преобразования ЛЮБОГО URL, который я передаю в структуру каталога или я должен сказать, что если вы перейдете на domain.com/hello/world, то он автоматически перейдет к моему php-скрипту: domain.com/?hello/world. Мне нужно, чтобы это было полностью динамичным, чтобы все, что я посылаю, было конвертировано.
т.е.
domain.com / login / register видится моим php-скриптом как domain.com/?login=register
domain.com/login = domain.com/?login=
domain.com/hello/world = domain.com/?hello=world
domain.com/pages/about = domain.com/?pages=about
domain.com/about = domain.com/?about
и, что более важно, мне нужно это сделать ..
domain.com / логин / регистрация / подтверждение / 6473440367233483730126345 = domain.com/?login=register&confirm=6473440367233483730126345
domain.com/posts/categories/general = domain.com/?posts=categories&general
в основном каждый нечетный каталог является ключом get, а каждый четный является значением (если оно есть). Это должно продолжаться столько времени, сколько необходимо, и не должно ограничиваться только 2 или 3 строками ключа / значения.
Редактировать: это то, что я изначально придумал (см. Ниже для окончательного решения).
.htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
index.php
$ReqURI = array_filter(explode('/',$_SERVER['REQUEST_URI']));
И это окончательное решение благодаря нескольким темам и небольшим изменениям.
.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
index.php
if(preg_match_all('([^/]+)', $_SERVER['REQUEST_URI'], $matches)){
$val = array();
$key = array();
foreach ($matches[0] as $i => $req){
if($i % 2){
$val[] = $req;
}else{
$key[] = $req;
}
}
if(count($val) < count($key)){
$val[] = '';
}
$params = array_combine($key,$val);
print_r($params);
}