PHP автоматически создает SEO дружественный URL

1

У меня есть PHP-url для показа контента для каждой страницы на языке, таком как:

категория:

articles
gallery
page
books
....

URL:

http://localhost/cms/load.php?page=articles&id=1&title=this-is-a-title.html&lang=ru
http://localhost/cms/load.php?page=page&id=10&title=this-is-a-page-title.html&lang=ru

В действии мне нужно автоматически переписать url для дружественного URL-адреса следующим образом:

http://localhost/cms/ru/articles/1/this-is-a-title.html
http://localhost/cms/ru/page/10/this-is-a-page-title.html

load.php

$page = isset($_GET['page']) ? safeGET($_GET['page']) : null;
$id   = isset($_GET['id'])   ? safeGET($_GET['id'])   : null;
if ($page=='articles') { include 'article.php'; } elseif { ... }

как я могу сгенерировать этот URL с PHP (Предпочтение без mod-rewrite)?! ИЛИ с .htaccess and PHP?

Теги:
.htaccess
url
mod-rewrite

4 ответа

0
Лучший ответ

Вы можете добиться этого следующим образом:

.htaccess

RewriteEngine on
RewriteBase /cms/
RewriteRule ^([a-z,A-Z]+)/([a-z,A-Z]+)/([0-9]+)/([a-z,A-Z,0-9]+)$ ./load.php?page=$2&id=$3&title=$4&lang=$1 [L,NC]

Таким образом, ваш файл load.php не нуждается в изменении и может принимать URL-адреса seo.

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

  • 0
    cms - это подпапка в localhost xammp, и вам нужно изменить RewriteBase /cms/ если cms установить в подпапку. ru язык нужно показывать после корневого каталога. это не работает идеально
  • 0
    не работа. Я вижу страницу ошибки 404.
Показать ещё 1 комментарий
1

сэкономить немного боли и использовать структуру маршрутизации (например, http://www.slimframework.com/)

хотя создание seo friendly urls (также называемых слизнями) не включено

0

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

Первый справочник: http://code.tutsplus.com/tutorials/the-ultimate-guide-to-htaccess-files--net-4757

Второй справочник: https://www.branded3.com/blog/htaccess-mod_rewrite-ultimate-guide/

0

Я бы рекомендовал использовать класс маршрутизации. Вы добавили бы файл htaccess, который переписывает все в файл index.php, тогда вы будете контролировать всю маршрутизацию в PHP.

AltoRouter - мой любимый https://github.com/dannyvankooten/AltoRouter. Это вдохновило Ruby Sinatra, но если вы Google "PHP routing class", вы можете найти еще много подобных классов для маршрутизации своих URL-адресов.

  • 0
    Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится.
  • 1
    Не понимаю, почему ты даешь мой ответ. Другие ответы здесь, включая ссылки, также не делали этого. Мой ответ не только ссылка, я только что упомянул, используя класс маршрутизации. Если вы используете класс маршрутизации Google PHP, вы найдете их много. Все они работают одинаково в целом, и я только что упомянул мой любимый, который я сейчас использую.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню