Как создавать страницы с SEO дружественными URL в PHP

  1. Код .htaccess
  2. PHP: получение URL
  3. Исходный код

Вы когда-нибудь хотели создать SEO-дружественные URL для ваших страниц, как это делает WordPress со своими постоянными ссылками% postname%? Здесь мы обсудим, как такие URL работают в PHP. Для простоты мы увидим только основной процесс, который позволяет нам использовать SEO дружественные URL на нашем веб-сайте, и как он будет распространяться по страницам с условными утверждениями.

Для простоты мы увидим только основной процесс, который позволяет нам использовать SEO дружественные URL на нашем веб-сайте, и как он будет распространяться по страницам с условными утверждениями

Как только вы поймете логику, будет легко реализовать и базу данных MySQL.

Для URL, дружественных к SEO, это не настоящие файлы с одинаковыми именами, вместо этого мы используем модуль Apache mod_rewrite, чтобы откатить каждую найденную страницу до index.php. Затем Index.php проверяет, какую страницу он вызвал, и вручную отправляет код заголовка 200 OK или 404 Not Found вместе с соответствующим содержимым.

Код .htaccess

Давайте сначала посмотрим на код файла .htaccess, который вам нужно будет поместить в тот же каталог, что и index.php.

.htaccess:

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule. /index.php [L] </ IfModule>

Выше код сначала подтверждает, включен ли модуль mod_rewrite. Если он не включен на вашем хосте, вы можете попросить хостинговую компанию включить его. Для WAMP и XAMPP его легко включить и отключить из меню демона в системном трее.

Если вы не работаете в корневом каталоге, вам также придется изменить RewriteBase и RewriteRule. Пример:

RewriteBase / sub / dir /

а также

RewriteRule. /sub/dir/index.php [L]

PHP: получение URL

Теперь давайте посмотрим на наш код для index.php :

<? php $ url = strtolower ($ _ SERVER ["REQUEST_URI"]); while (preg_match ("/ \ / \ //", $ url)) {// удаляет двойную косую черту $ url = str_replace ("//", "/", $ url); } $ url = explode ("?", $ url); // удаляет строку запроса $ url = explode ("/", $ url [0]); // удаляет строку запроса array_shift ($ url); // удаляет первый элемент массива, который является пустым print_r ($ url); ?>

При доступе Http: // сайт / суб / реж / контакт , мы получим следующий вывод:

Выход:

Массив ([0] => sub [1] => dir [2] => contact)

Теперь мы продолжим показывать нашу соответствующую страницу. Добавьте следующие строки в конец index.php :

if ($ url [2] == "") {header ("HTTP / 1.1 200 OK"); эхо "дома"; } elseif ($ url [2] == "contact") {header ("HTTP / 1.1 200 OK"); эхо "контакт"; } else {header ("HTTP / 1.1 404 Not Found"); эхо "404"; }

Как вы можете видеть, мы использовали простой, если, иначе, здесь. В случае обращения к корню каталога $ url [2] будет пустым. Это покажет домашнюю страницу. Когда $ url [2] равен «contact», он отображает страницу контакта, а когда что-то еще, мы считаем, что пользователь попытался получить доступ к странице, которая не найдена на нашем веб-сайте, следовательно, будет отображаться страница 404.

Мы отправляем заголовки http, используя функцию header (). Тогда мы использовали эхо только для нашего понимания. Здесь вы можете добавить функцию include () для включения фактического файла или использовать переменные для сохранения имени страницы, а затем распечатать весь шаблон с файлами заголовка, боковой панели и нижнего колонтитула.

Если в какой-то момент вы решите добавить подстраницы на свой веб-сайт, вам нужно будет создать вложенную ссылку под родительским URL-адресом в $ url [2]. В этом случае ваша подстраница будет доступна как $ url [3].

Окончательный код в index.php выглядит следующим образом:

<? php $ url = strtolower ($ _ SERVER ["REQUEST_URI"]); while (preg_match ("/ \ / \ //", $ url)) {$ url = str_replace ("//", "/", $ url); } $ url = explode ("?", $ url); $ url = explode ("/", $ url [0]); array_shift ($ URL); // print_r ($ URL); if ($ url [2] == "") {header ("HTTP / 1.1 200 OK"); эхо "дома"; } elseif ($ url [2] == "contact") {header ("HTTP / 1.1 200 OK"); эхо "контакт"; } else {header ("HTTP / 1.1 404 Not Found"); эхо "404"; }?>

Исходный код

index.php

<? php $ url = strtolower ($ _ SERVER ["REQUEST_URI"]); while (preg_match ("/ \ / \ //", $ url)) {$ url = str_replace ("//", "/", $ url); } $ url = explode ("?", $ url); $ url = explode ("/", $ url [0]); array_shift ($ URL); // print_r ($ URL); if ($ url [2] == "") {header ("HTTP / 1.1 200 OK"); эхо "дома"; } elseif ($ url [2] == "contact") {header ("HTTP / 1.1 200 OK"); эхо "контакт"; } else {header ("HTTP / 1.1 404 Not Found"); эхо "404"; }?>