【问题标题】:.htaccess rewrite howto [duplicate].htaccess 重写操作方法 [重复]
【发布时间】:2012-09-07 17:39:45
【问题描述】:

可能重复:
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 中抑制 /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}, ...

TY

【问题讨论】:

    标签: .htaccess rewrite


    【解决方案1】:

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

    Apache mod_rewrite

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

    我认为它更容易实现。 (或者也许这是一种错误的做法,我没有意识到缺点)

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 2010-12-19
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 2013-06-23
      • 2017-01-26
      相关资源
      最近更新 更多