我被要求制作一个现有的网站多语言。
为此,我不得不将所有现有页面从 /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 之后的语言重写。我仍然陷入循环。