Вопрос

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

По сути, у меня есть веб-сайт, который практически на 100% динамичен.Все ссылки на веб-сайте генерируются с использованием PHP, а все страницы состоят из включений/кода PHP.Я пытаюсь улучшить 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

Существует пример другого вопроса, опубликованного Гамбо однако я чувствовал, что это немного беспорядочно и неясно, что именно он делает.

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

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

Это было полезно?

Решение

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

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

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

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

Итак, вы бы изменили это на:

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

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

Другие советы

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

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

  1. Apache перепишет URL-адрес, используя правила в .htaccess, так что все написанное будет перенаправлено на index.php?q=.Например, набрав http://example.com/i/am/здесь приведет к вызову 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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top