SEO дружественный URL к динамическому URL с использованием PHP - PullRequest
1 голос
/ 26 мая 2010

В настоящее время у меня есть такой 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.

Я надеюсь, что у кого-то есть другая идея, которая могла бы помочь, я был бы очень признателен. Если у вас есть ссылка на что-то в Интернете, это также поможет.

Ответы [ 2 ]

6 голосов
/ 26 мая 2010

Почему бы не направить все запросы к 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'],"/"));
1 голос
/ 26 мая 2010

В дополнение к ответу полковника Шрапнеля, по крайней мере, уменьшите выбор:

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