.htaccess mod_rewrite国家代码前缀

时间:2014-06-25 06:09:37

标签: apache .htaccess mod-rewrite internationalization

假设我有一个名为example.com的网站,其网页如下:

example.com
example.com/foo
example.com/bar

现在我想创建一个澳大利亚版本的网站。大多数页面的内容在两个站点上都是相同的,但URL结构将是:

example.com/au
example.com/au/foo
example.com/au/bar

所有请求都已通过我的.htaccess文件中的以下路由通过index.php进行路由:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

我如何改变这一点,以便example.com/fooexample.com/au/foo都通过index.php路由。就index.php而言,我希望它以同样的方式对待这两个页面。

确定要显示哪些内容的逻辑将在稍后发生,并且超出了此问题的范围。

1 个答案:

答案 0 :(得分:1)

一个小小的调整

我假设foobar都不是实际目录。

  • RewriteCond %{REQUEST_FILENAME} !-f检查请求是否为现有文件
  • RewriteCond %{REQUEST_FILENAME} !-d检查请求是否不是现有目录

example.com/fooexample.com/au/foo都符合这些条件,因此会遵循该规则。让我们做一个小调整,以便index.php不受路径碎片的污染:

RewriteRule ^ index.php [L,DPI]

有了这个,你应该被设定。 :)