.htaccess mod_rewrite国家代码前缀



假设我有一个名为example.com的网站,它有以下页面:

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

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

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

所有请求都已经通过index.php通过我的。htaccess文件中的以下内容路由:

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而言,我希望它以相同的方式处理两个页面。

决定要显示哪些内容的逻辑将在稍后发生,这超出了这个问题的范围。

一个小小的调整

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

  • RewriteCond %{REQUEST_FILENAME} !-f检查请求不是一个存在的文件
  • RewriteCond %{REQUEST_FILENAME} !-d检查请求不是一个现有的目录

example.com/fooexample.com/au/foo都满足这些条件,因此将遵循规则。让我们做一个小调整,这样index.php不会被路径碎片污染:

RewriteRule ^ index.php [L,DPI]

有了这个,你应该设置好了。:)

最新更新