Парсинг URL с использованием PHP

Я разместил подобный вопрос здесь. Тем не менее, это было больше о получении совета о том, что делать. Теперь, когда я знаю, что делать, я ищу небольшую помощь, как это сделать!

По сути, у меня есть веб-сайт, который на 100% динамичен. Все ссылки на веб-сайты генерируются с использованием PHP, а все страницы состоят из php include /code. Я пытаюсь улучшить SEO сайта путем улучшения URL (как указано в другом вопросе), и я немного борюсь.

Я использую mod_rewrite для переписывания хороших URL-адресов на ужасные URL-адреса на сервере. Поэтому мне нужно теперь преобразовать уродливые URL-адреса (которые генерируются из кода php на страницах) в более хорошие URL-адреса.

Вот URL-адреса, которые мне нужно проанализировать (они также включены в другой вопрос):

/index.php?m=ModuleType
/index.php?m=ModuleType&categoryID=id
/index.php?m=ModuleType&categoryID=id&productID=id
/index.php?page=PageType
/index.php?page=PageType&detail=yes

Вот что я хочу, чтобы вышеуказанные URL были проанализированы:

/ModuleType
/ModuleType/CategoryName
/ModuleType/CategoryName/ProductName
/PageType
/PageType/Detail

В другом вопросе, опубликованном Gumbo, есть пример, однако я чувствовал, что он немного запутан и неясен, что именно он делал.

Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо.

4 ответа

Решение

Я думаю, что вижу, что вы после... Вы сделали все переписывание URL, но все ссылки между вашими страницами используют старый синтаксис URL.

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

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

<?php echo "<a href='/index.php?m=$ModuleType&categoryID=$id'>"; ?>

Так что вы бы изменили это на:

<?php echo "<a href='$ModuleType/$id'>"; ?>

Извините, если я допустил ошибки в синтаксисе, просто из головы...

Как писал Палантир, это делается с помощью mod_rewrite и.htaccess. Чтобы получить правильные условия перезаписи в ваш.htaccess, вы можете взглянуть на Mod Rewrite Generator (например, http://www.generateit.net/mod-rewrite/). Делает это намного проще.

Если я не понял ваш вопрос, вы не анализируете "уродливые" URL, ваш PHP-скрипт вызывается с ними, поэтому вы $_GET[] ваши параметры (m, categoryID, productID) и вы объединяете их, чтобы сделать ваши красивые URL, которые не должны быть слишком сложными (просто немного логики, чтобы увидеть, есть ли один параметр, и объединить строки).

Вам понадобится фронт-контроллер, который отправит URL на нужную страницу.

  1. Apache перезапишет URL, используя правила в.htaccess, так что все написанное будет перенаправлено в index.php? Q =. Например, ввод http://example.com/i/am/here приведет к вызову index.php? Q = / i / am / here
  2. Index.php проанализирует путь из $_GET["q"] и решит, что делать. Например, он может содержать страницу или перейти в базу данных, найти путь вверх, получить соответствующий контент и распечатать его.

Если вам нужен рабочий пример.htaccess, который будет делать именно это (перенаправьте на index.php с? Q =path), посмотрите, как это делает drupal:

http://cvs.drupal.org/viewvc.py/drupal/drupal/.htaccess?revision=1.104

Другие вопросы по тегам