【问题标题】:How to ignore 'en' portion in URL - multi-language website如何忽略 URL 中的“en”部分 - 多语言网站
【发布时间】:2019-06-14 17:11:57
【问题描述】:

我正在创建一个多语言站点,它使用 URL 的一部分来确定语言,并且 动态 使用 PHP 数组 用内容填充页面。我这样做是为了让每种语言都有自己的网址:

 https://website.com/en/home.php
 https://website.com/nl/home.php

在这种情况下的问题是,当使用 https://website.com/en/home.php 访问英文网站时,该网站尝试打开位于文件夹中的文件:
(root) /> zh > home.php

虽然文件实际位于:
(root)/>/> home.php

是否可以在打开 HTML 文件时“忽略”URL 中的 语言部分,但不进行重定向,以便用户在导航到页面时仍能看到它。

我尝试使用<base> html 标记,但这不起作用。

任何帮助将不胜感激!

【问题讨论】:

  • 是的,创建一个路由器为您执行此操作。路由器会读取您的 slug 并将您导航到适当的文件。

标签: html url redirect multilingual


【解决方案1】:

要创建路由器,您可以按照教程here

您将特别需要更改您的 .htaccess 文件以包含

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [QSA,L]

这会将所有请求重定向到 index.php

index.php 需要包含:

<?php

$request = $_SERVER['REDIRECT_URL'];

switch ($request) {
    case '/' :
        require __DIR__ . '/home.php';
        break;
    case '/en/home.php' :
        require __DIR__ . '/home.php';
        break;
    case '' :
        require __DIR__ . '/home.php';
        break;
    default:
        require __DIR__ . '/404.php';
        break;
    }

这样,所有重定向到 index.php 的请求都将根据您在此路由器中指定的请求 URL 显示特定页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多