我正在尝试为不同的语言创建不同的网址,例如http://localhost/shift/en 没有" en"是一个实际的文件夹(shift是一个实际的子文件夹)。我想要' en'是我可以在我的PHP代码中使用的变量。以下是我的htaccess的样子:
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /shift/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ public/index.php [QSA,L]
RewriteRule ^(en|de|fr)/(.*)$ $2?lang=$1 [L,QSA]
RewriteRule ^(.*)$ $1?lang=en [L,QSA]
这是我的PHP代码:
var_dump($_GET['lang']);
当我转到http://localhost/shift/en时,它会给我404和PHP错误:"未定义索引:lang"。
答案 0 :(得分:1)
您需要像这样编辑.htaccess
-
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?lang=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?lang=$1
和 index.php :
echo $_GET['lang'];
如果网址为 - http://example.com/en
,那么输出将为 - en
然后你可以用语言做其他事情。
如果您想提供不同版本的页面,我建议您使用每种语言的页面,并在网址中要求使用该语言时将其包含在内。
例如 - 如果某人键入http://example.com/en
,则需要在 index.php 中执行此操作 -
if($_GET['lang']=="en") {
$_SESSION['language']="en"; //Adding a session makes your life easier
include("en.php");
//everything else
}
我更新了重写规则。看看吧。