Intereting Posts
получить имя переменной post Я хотел бы выбрать случайное видео YouTube из базы данных MySQL и отобразить его на моей веб-странице Magento: отображать продукты из дочерних категорий, если родительская категория пуста Самый быстрый способ удаления значения в списке, разделенном запятыми Удаление пробелов или% 20 в url с использованием htaccess ошибка мыла. Неустранимая ошибка: исключение SoapFault: Не удалось подключиться к хосту Отладка маршрутов в кодеригнере? Как получить одно значение из результата запроса в php Сделать несколько страниц из запроса mysql Как создать сценарий отправки формы на стороне сервера, который имеет характеристики на стороне клиента? CKEditor, отображающий HTML-теги в редакторе Как мы можем изменить непрозрачность и затенение шрифта в функции imagettftext? Как эффективно подключаться к mysql в php без повторного подключения к каждому запросу Использовать сеанс в Cronjob (Crontab) Сверхъестественное поведение на странице facebook

SEO Дружественный URL-адрес для динамического URL-адреса с помощью PHP

В настоящее время у меня есть 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 (это станет важным позже).

Я пробовал несколько решений, в том числе:

  1. mod_rewrite – проблема с этим подходом заключается в том, что он становится огромным файлом .htaccess, так как нам нужно написать правило для каждой категории.

  2. RewriteMap – это довольно близко, так как я мог запросить базу данных для создания файла карты для вывода. Однако с тех пор я узнал, что у нас нет доступа к httpd.conf.

  3. 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