.htaccess для удобного URL-адреса с несколькими переменными


Я работаю над тем, чтобы сделать мой сайт более удобным для SEO, который я в настоящее время использую

RewriteEngine On
RewriteRule (.*)$ index.php?page=$1

Чтобы превратить site.co.uk/index.php?page=page_name в site.co.uk/page_name

Я также хочу использовать это и для подстраниц. Я пробовал это:

RewriteEngine On
RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2

Но он не работает, он запускается site.co.uk/page_name/sub_page, но когда вы переходите к site.co.uk/page_name, он возвращает 404 не найдено.

Я хочу, чтобы он запустился site.co.uk/page_name и вернулся page_name

Или

site.co.uk/page_name/sub_page и вернуться sub_page

И так далее

site.co.uk/page_name/sub_page/sub_page2/...

Author: Lawrence Cherone, 2012-09-17

1 answers

Используя только:

RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

Нормально, тогда вы можете направить запрос в своем скрипте.

Вы разделяете переменную страницы разделителем explode()/, а затем устанавливаете переменные.

$route = explode('/',$_GET['page']);

$page    = isset($route[0]) ? $route[0] : null;
$subpage = isset($route[1]) ? $route[1] : null;
$yada    = isset($route[2]) ? $route[2] : null;

Многие фреймворки MVC используют этот метод. Это называется маршрутизацией.

 7
Author: Lawrence Cherone, 2014-05-28 16:42:51