首页 > 解决方案 > 将子文件夹指向根目录而不更改 URL

问题描述

我正在翻译我的网站并将使用以下结构:

从维护的角度来看,我想为所有语言使用完全相同的 PHP 文件。我将只获取 URL,查看 URL 中的语言代码并从我的数据库中加载正确的语言。这样,我不必使用基本相同的代码维护不同的文件。

因此,理想情况下,我想www.mywebsite.com/es加载www.mywebsite.com/index.php但不重定向到它:地址栏中的 URL 仍应包含/es.

以同样的方式,www.mywebsite.com/es/whatever/other.php应该加载www.mywebsite.com/whatever/other.php,但/es在 URL 中。

这在 .htaccess 中可行吗?

我现在要做的就是把它放进去/es/index.php

include('../index.php');

...效果很好,但维护起来有点重,因为我必须在所有语言文件夹中创建所有这些虚拟页面。

标签: php.htaccess

解决方案


您可以在站点根目录 .htaccess 中使用此代码:

DirectoryIndex index.php
Options -MultiViews
RewriteEngine On

RewriteRule ^(es|fr)$ /$1/ [L,NC,R=301]

RewriteRule ^(?:es|fr)/$ index.php [L,NC]

RewriteRule ^(?:es|fr)/(.+)$ $1 [L,NC]

推荐阅读