0

可能重复:
使用 htaccess 文件重定向

你好(非常简单的问题),

如何映射

mydomain/language/somepage

mydomain/somepage.php

物理页面当然是 mydomain/somepage.php

想法是/en/somepage、/fr/somepage、/de/somepage 都指向somepage.php(我打算用php 获取URL 中传递的语言)。

更具体地说,我希望 apache 理解从请求 URI 中抑制 /fr /en /de 并提供正确的文档,我的物理树没有任何 /fr /en /de 子目录:即

root/fr/subdir/subsubdir/somepage

应该指向

root/subdir/subsubdir/somepage.php

谢谢 !

* 编辑 *

所以,我想我对 URL 重写的工作原理有了更好的了解,所以我来到了这里。它坏了,我实际上很讨厌正则表达式,所以如果有人可以帮我解决它,我会喜欢它!^^

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ^[a-z]{2}$/%{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-z]{2})/(.*)$ $2.php?lang=$1

说明:URL 将以以下形式传递给 apache

root/(fr|de|en|whatever)/document

并且(应该)以/传递给php的形式重写

root/document.php?lang=(fr|de|en|whatever)

我希望它足够清楚,TYVM!

此外,能够传递子目录以及

root/(fr|de|en|whatever)/sub/.../document

会很好。我需要进一步解释 htaccess 的常量,例如 %{REQUEST_FILENAME}, %{REQUEST_URI}, ...

4

1 回答 1

1

如果您尝试将用户重定向到 apache 中的某个 URL,那么本教程应该可以为您提供一个很好的指导:

Apache mod_rewrite

但是,对于您的网站,我认为更好的方法是使用语言选项作为查询字符串。我觉得这样你可以更好地处理基于语言的网站。例如,如果您的网站有 30 个不同国家/地区的本地化版本,您将需要为所有 30 个国家/地区执行 mod_rewrite,当您需要更新您的网站时,您必须全部修复它们。但是,如果您使用查询字符串。您somepage.php可以获取查询字符串值并基于该值呈现必要的页面。

我认为它更容易实现。(或者也许这是一种错误的做法,我不知道缺点)

于 2012-09-07T17:55:34.220 回答