В настоящее время у меня есть URL-адрес
http://<client_name>.website.com/index.php?function_name&cat=32
Я хочу настроить все, чтобы наши специалисты по маркетингу могли публиковать URL-адрес, например
http://<client_name>.website.com/<parent_category>/<category>
«Cat = XX» будет генерироваться только из последней <category>
. Но маркетинг хочет использовать родительскую категорию в своих кампаниях. В настоящее время мы передаем весь URL-адрес через index.php в корневой каталог html (это станет важным позже).
Я пробовал несколько решений, в том числе:
mod_rewrite – проблема с этим подходом заключается в том, что он становится огромным файлом .htaccess, так как нам нужно написать правило для каждой категории.
RewriteMap – это довольно близко, так как я мог запросить базу данных для создания файла карты для вывода. Однако с тех пор я узнал, что у нас нет доступа к httpd.conf.
index.php. Я пытался запустить все через наш файл index.php, который работает, но не поддерживает URL-адрес в браузере для целей SEO.
Я надеюсь, что у кого-то есть другая идея, которая могла бы помочь, я бы очень признателен. Если у вас есть ссылка на что-то в Интернете, это поможет сделать это тоже здорово.
Почему бы не перенаправить все запросы на index.php с mod_rewrite и использовать PHP для написания логики маршрутизации, которая кажется более надежной, чем запись отдельных правил перезаписи?
Как простой .htaccess как этот
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [QSA,L]
И несколько строк кода PHP в index.php
$client_name = strtok($_SERVER['HTTP_HOST'],"."); list ($cat,$subcat) = explode("/",trim($_GET['request'],"/"));
В дополнение к ответу полковника Шрапнелла, по крайней мере, тонкий выбор:
RewriteRule ^/([-a-zA-Z0-9_]+)/([0-9]+)$ index.php?function_name=$1&cat=$2 [L,QSA] # domain.com/cat_name/23 is sent to the server as domain.com/index.php?function_name=cat_name&cat=23