【发布时间】:2013-08-14 20:11:52
【问题描述】:
有人要求我将现有网站制作成多语言。
为此我不得不将所有现有页面从 /path/page 移动到 /en/path/page
为了维护任何现有的传入链接,我现在需要设置一个 htaccess 重定向,以将任何请求从其原始 url 发送到新的 /en/path/page url,但我无法让它工作。
这是我目前拥有的;
RewriteCond %{REQUEST_URI} !^/en$
RewriteRule ^(.*)$ /en/$1 [R=301,L]
我 认为 是为了检查请求的 URI,如果它不以 /en 开头,则将 /en 附加到请求的 URI 上......但我显然错了,因为它没有不行。
任何帮助表示赞赏。谢谢。
更新。 由于这是一个 ExpressionEngine 站点,并且有一个附加规则来删除 URL 的 index.php 部分,因此这两个规则都是规则
# Rewrite for new language based urls
# This is to try and get all current pages going to /en/(old url) with a 301 redirect
RewriteCond %{REQUEST_URI} !^/en(/.*)?$
RewriteRule ^(.*)$ /en/$1 [R=301,L]
# Removes index.php
RewriteCond $1 !\.(gif|jpe?g|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
我也尝试过使用 index.php 之后的语言重写。我仍然陷入循环中。
【问题讨论】: