.htaccess重写howto

时间:2012-09-07 17:39:45

标签: .htaccess rewrite

  

可能重复:
  redirect using htaccess file

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

如何映射

mydomain/language/somepage

mydomain/somepage.php

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

这个想法是/ en / somepage,/ fr / somepage,/ de / somepage都指向somepage.php(我打算用php在URL中传递语言)。

更具体地说,我希望apache能够从请求URI中理解SUPPRESS / fr / en / de并传递正确的文档,我的物理树没有任何/ fr / en / de子目录:即。

root/fr/subdir/subsubdir/somepage

应指向

root/subdir/subsubdir/somepage.php

谢谢!

*编辑*

所以,我认为我更好地了解了网址重写的工作方式,所以我已经明白了。它已经坏了,我真的很喜欢正则表达式,所以如果有人可以帮我解决它,我会喜欢它! ^^

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},...

TY

1 个答案:

答案 0 :(得分:1)

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

Apache mod_rewrite

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

我认为实施起来更容易。 (或者这可能是一种错误的做法,我不知道这些缺点)