Переписать URL htaccess. Изменить с идентификатора на псевдоним - PullRequest
0 голосов
/ 15 января 2019

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

Например, я хотел бы иметь

myurl.com / Pagina / страница имя

вместо

myurl.com / Pagina / 1

Это рабочий код

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

# redirect "/pagina.php?id=xxx" to "/pagina/xxx"
RewriteCond %{THE_REQUEST} pagina\.php\?id=([0-9]+)\s [NC]
RewriteRule ^ /pagina/%1? [R=301,L]

# internally rewrite "/pagina/xxx" to "/pagina.php?id=xxx"
RewriteRule ^pagina/([0-9]+)$ actagov/pagina.php?id=$1 [L]

Я пытался изменить его на

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

# redirect "/pagina.php?alias=xxx" to "/pagina/xxx"
RewriteCond %{THE_REQUEST} pagina\.php\?alias=([^&\s]+)\s [NC]
RewriteRule ^ /pagina/%1? [R=301,L]

# internally rewrite "/pagina/xxx" to "/pagina.php?alias=xxx"
RewriteRule ^pagina/([^&\s]+)$ actagov/pagina.php?alias=$1 [L]

PHP-файл

if(isset($_GET['alias']))
{
    if(!empty($_GET['alias']))
    {
        $alias_pagina = $_GET['alias'];
        $result_pagina = mysqli_query($mysqli, "SELECT * FROM pages WHERE 
nome='$alias_pagina'");
        $query_pagina = mysqli_fetch_assoc($result_pagina);
        $id_pagina = $query_pagina['id'];
        $id_template = $query_pagina['id_template'];
        switch($id_template)
        {
            case '1':
            include 'page_template_standard.php';
            break;

            case '2':
            include 'page_template_two_column.php';
            break;
        }
    }   
    else
    {
        header('Location: index.php');
    }
}
else
{
    header('Location: index.php');
}
?>

Но это не перенаправление вообще. Возможно, я ошибаюсь в синтаксисе, но я не очень знаком с языком htaccess . Можете ли вы сказать мне, что я должен изменить?

РЕДАКТИРОВАТЬ: я наконец нашел рабочее решение

Options -MultiViews 
RewriteEngine On 

# redirect "pagina.php?alias=xxx" to "/xxx"
RewriteCond %{THE_REQUEST} /pagina\.php\?alias=([a-zA-Z0-9_-]+) [NC]
RewriteRule ^ /actagov/%1? [R=301,L]

# internally rewrite "/xxx" to "pagina.php?alias=xxx"
RewriteRule ^([a-zA-Z0-9_-]+)$ pagina.php?alias=$1 [L]

Это преобразует URL

локальный / actagov / pagina.php? Псевдоним = псевдоним имя

в

* * Локальный / actagov / псевдоним имя-1040
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...