php - 将子文件夹指向根目录而不更改 URL
问题描述
我正在翻译我的网站并将使用以下结构:
- www.mywebsite.com --> 英文版
- www.mywebsite.com/es --> ES 版本
- www.mywebsite.com/fr --> FR 版本
- ...
从维护的角度来看,我想为所有语言使用完全相同的 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');
...效果很好,但维护起来有点重,因为我必须在所有语言文件夹中创建所有这些虚拟页面。
解决方案
您可以在站点根目录 .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]
推荐阅读
- r - 如何从随机分布中生成和采样,以适应 R 中的观察值?
- javascript - 使用 selenium 的 javascript 自动化
- react-native - React 原生自定义日历列表
- firebase - Firebase authentification without login
- javascript - 如何在 HTML 中制作可编辑的段落?
- oracle - 解析csv文件并将内容作为sql plus中的clob对象放入表中
- javascript - 用 JavaScript 隐藏 HTML 中的类?
- hibernate - 如何使用网络存储多对多映射休眠
- botframework - 当我们在 spfx bot 扩展中使用 Adaptivecards Fabric UI 时无法提供输入
- directx-11 - 阴影贴图将未应用阴影贴图的风景放入阴影中