You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多语言动态链接配置:URL伪静态映射问题咨询

搞定多语言URL映射的解决方案

嘿,我来帮你解决这个多语言URL的映射问题!咱们分两步操作,先配置.htaccess实现URL重写,再调整fonksiyon.php的语言逻辑,就能让www.yourdomain.com/en这类URL直接对应到languages目录下的en.php啦~

第一步:修改.htaccess配置

首先得确保你的Apache服务器开了mod_rewrite模块(一般主机默认都开着,要是没开就联系主机商帮忙开启),然后把你的.htaccess文件改成下面这样:

# 开启URL重写引擎
RewriteEngine On

# 处理不带斜杠的请求,比如 yourdomain.com/en
RewriteRule ^(en|rs)$ languages/$1.php [L]

# 处理带斜杠的请求,比如 yourdomain.com/rs/
RewriteRule ^(en|rs)/$ languages/$1.php [L]

# 可选:访问根目录时自动跳转到英文页面(如果需要默认语言的话)
RewriteRule ^$ languages/en.php [R=302,L]

这段规则的作用很简单:用户访问/en或/rs(不管有没有结尾斜杠),服务器都会偷偷加载languages目录下对应的php文件,但URL显示还是用户输入的那个漂亮格式~

第二步:调整fonksiyon.php的语言逻辑

接下来更新你的fonksiyon.php,让它能识别当前的语言,方便后续页面使用:

<?php
// 默认语言设为英文
$current_lang = 'en';

// 从请求的URL里提取语言标识
$request_path = trim($_SERVER['REQUEST_URI'], '/');
// 匹配开头的en或rs
if (preg_match('/^(en|rs)/', $request_path, $matches)) {
    $current_lang = $matches[1];
}

// 定义全局常量,其他页面直接用就行
define('CURRENT_LANGUAGE', $current_lang);

// 要是你有单独的语言翻译文件(比如languages/en_lang.php),可以在这加载
// require_once "languages/{$current_lang}_lang.php";
?>

这样你在languages/en.php或者languages/rs.php里,随时能用CURRENT_LANGUAGE知道当前是哪种语言,方便渲染对应内容。

关于根目录的en.php、tr.php

要是根目录的en.php和tr.php没用了,直接删掉就行;要是还需要保留,要么把它们移到languages目录下统一管理,要么在.htaccess里加额外规则适配,看你需求来~

最后测试一下

改完之后直接访问你的域名+/en或者+/rs,应该就能看到languages目录下对应文件的内容了,URL还是保持你想要的简洁格式,完美!

内容的提问来源于stack exchange,提问作者matchs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:26:11