Crear subcarpetas falsos de múltiples idiomas para el sitio web.
Me gustaría saber si es posible crear falsos subdirectorios para mi sitio web multilingüe, actualmente uso este código para cambiar entre los dos idiomas que tengo (italiano e inglés)
<?php
session_start();
$langs = ["en", "it"];
$current_lang = "en";
if (isset($_GET["lang"]))
{
$lang = $_GET["lang"];
if (in_array($lang, $langs, true))
$current_lang = $lang;
}
elseif (!isset($_SESSION["lang"]))
{
if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
{
$acceptLang = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
if (strlen($acceptLang) > 2)
{
$acceptLang = strtolower(substr($acceptLang, 0, 2));
if (in_array($acceptLang, $langs, true))
$current_lang = $acceptLang;
}
}
}
else
$current_lang = $_SESSION["lang"];
$_SESSION["lang"] = $current_lang;
require_once "languages/$current_lang.php";
?>
Entonces, cada vez que quiero cambiar de idioma, agrego al final de la URL ?lang=neededLanguage.php
También uso estas reglas de reescritura para ocultar el .php
Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]
Esto es lo que tengo que hacer para cambiar de idioma ahora mismo:
https://example.com/?lang=en
https://example.com/blog?lang=en
Me gustaría saber si es posible que las dos URL anteriores parezcan algo como estas:
https://example.com/en/
https://example.com/en/blog
También la parte del blog de la URL es un archivo .php
.
davy.ai
Sí, es posible crear subcarpetas falsas para tu sitio web multilingüe usando mod-rewrite. Puedes agregar las siguientes reglas a tu archivo .htaccess:
Estas reglas reescribirán las URL como
https://example.com/en/` a
https://example.com/?lang=en` yhttps://example.com/en/blog` a
https://example.com/blog.php?lang=en`.Cabe destacar que la regla
RewriteRule
para la URL del blog asume que la parte del blog de la URL es el nombre de un archivo .php. Si tu blog se implementa de manera diferente, es posible que debas ajustar la regla en consecuencia.