RewriteRule htaccess статья и строка запроса пагинации
Я пытаюсь применить некоторые правила переписывания в моем htaccess
Я просмотрел несколько доступных здесь статей по stackru, но все еще не смог решить все проблемы.
Уродливый URL: www.example.com/index.php?p=page&article_id=14¤tpage=2
SEO URL: www.example.com/page/14/2
куда p
это динамическое имя страницы, article_id
идентификатор статьи, очевидно, и currentpage
это строка запроса пагинации
Мое текущее правило:
RewriteRule ^(.*)$ index.php\?p=$1 [QSA,L]
Ранее упомянутое правило отлично работает в этом случае:
Уродливый URL: www.example.com/index.php?p=page
SEO URL: www.example.com/page
Но как насчет того, когда у меня есть article_id
и currentpage
в некоторых случаях?
Буду признателен за любую оказанную помощь.
1 ответ
Так что-то вроде:
RewriteRule ^page/([^/]*)/([^/]*)$ index.php?p=page&article_id=$1¤tpage=$2 [QSA,L]
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
Направить этот конкретный случай?
Или направьте его в PHP, очень простой маршрут для .htaccess
Вы в настоящее время должны соответствовать что-то вроде:
$p = strtolower($_GET['p']);
$params = explode('/', $p);
if(!is_array($params)) {
$func = $params;
} else {
$func = array_shift($params);
}
if("page" == $func) {
if(is_array($params)) {
$article_id = $params[0];
$currentpage = isset($params[1]) ? $params[1] : 0;
//Do something with that info, use what's needed to errorcheck/etc
} else {
//default view
}
}
Хотя, на мой взгляд, рассмотрение маршрутизации подойдет вам лучше, если все это может быть динамичным. Опять же, пример показывает, как вы можете сделать это без каких-либо внешних, простых вещей, есть множество классов, которые также будут выполнять маршрутизацию.