php htaccess seo многоязычный - PullRequest
0 голосов
/ 10 июля 2020

Обычно я веду запись в сеансе для языка, но я хочу вместо того, чтобы хранить его в сеансе mysite.com / tr mysite.com / en mysite.com / ar Я хочу это сделать, но когда я ввожу mysite.com / tr , я застреваю в приложении с ошибкой 404.

mysite. com / tr / blog

mysite.com / en / blog

mysite.com / ar / blog

<div class="topbar-dropdown">
<div class="title" id="language">
<a href="lang?lang=tr"><img src="images/tr.png"></a>
<a href="lang?lang=en"><img src="images/en.png"></a>
<a href="lang?lang=ar"><img src="images/ar.png"></a>
</div>
</div>

приложение / контроллер / язык. php

$lang = strip_tags($_GET['lang']);
if ($lang == "tr" || $lang == "en" || $lang == "ar") {
$_SESSION['language'] = $lang;
header('Location:' . $_SERVER['HTTP_REFERER']);
}else {
header('Location:' . $_SERVER['HTTP_REFERER']);
}

.htaccess

RewriteEngine On
RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)$ index.php?category=$1&service=$2 [QSA]
RewriteRule ^([a-zA-Z0-9-_/]+)$ index.php [QSA]

приложение . php

function controller($controllerName)
{
    $controllerName = strtolower($controllerName);
    return PATH . '/app/controller/' . $controllerName . '.php';
}

function view($viewName)
{
    return PATH . '/app/view/'. $viewName . '.php';
}

function route($index)
{
    global $route;
    return isset($route[$index]) ? $route[$index] : false;
}
if (!file_exists(controller(route(0)))) {
    $route[0] = '404';
}

индекс. php

$routeExplode = explode('?', $_SERVER['REQUEST_URI']);
$route = array_values(array_filter(explode('/', $routeExplode[0])));
if (SUBFOLDER_NAME != '/') {
    array_shift($route);
}

if (!route(0)) {
    $route[0] = 'index';
}

конфигурация php

define('PATH', realpath('.'));
define('SUBFOLDER_NAME', dirname($_SERVER['SCRIPT_NAME']));
define('URL', 'http://' . $_SERVER['SERVER_NAME'] . (SUBFOLDER_NAME == '/' ? null : SUBFOLDER_NAME));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...