У меня есть 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
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-адрес, мы также сможем вам помочь.
сэкономить немного боли и использовать структуру маршрутизации (например, http://www.slimframework.com/)
хотя создание seo friendly urls
(также называемых слизнями) не включено
Здесь вы можете найти два полезных руководства, которые я использовал, чтобы понять, как работает.htacces. Есть много хорошего примера, я надеюсь, что это поможет:
Первый справочник: http://code.tutsplus.com/tutorials/the-ultimate-guide-to-htaccess-files--net-4757
Второй справочник: https://www.branded3.com/blog/htaccess-mod_rewrite-ultimate-guide/
Я бы рекомендовал использовать класс маршрутизации. Вы добавили бы файл htaccess, который переписывает все в файл index.php, тогда вы будете контролировать всю маршрутизацию в PHP.
AltoRouter - мой любимый https://github.com/dannyvankooten/AltoRouter. Это вдохновило Ruby Sinatra, но если вы Google "PHP routing class", вы можете найти еще много подобных классов для маршрутизации своих URL-адресов.
RewriteBase /cms/
если cms установить в подпапку.ru
язык нужно показывать после корневого каталога. это не работает идеально