RewriteRule htaccess статья и строка запроса пагинации

Я пытаюсь применить некоторые правила переписывания в моем htaccessЯ просмотрел несколько доступных здесь статей по stackru, но все еще не смог решить все проблемы.

Уродливый URL: www.example.com/index.php?p=page&article_id=14&currentpage=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&currentpage=$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
    }
}

Хотя, на мой взгляд, рассмотрение маршрутизации подойдет вам лучше, если все это может быть динамичным. Опять же, пример показывает, как вы можете сделать это без каких-либо внешних, простых вещей, есть множество классов, которые также будут выполнять маршрутизацию.

Другие вопросы по тегам