gpt4 book ai didi

.htaccess - 带有子目录的 htaccess 多语言站点,默认为 301

转载 作者:行者123 更新时间:2023-12-03 23:32:16 25 4
gpt4 key购买 nike

我在设置 htaccess 以允许使用子目录方法的多种语言时遇到一些问题,例如:

http://www.domain.com/en/
http://www.domain.com/sw/
http://www.domain.com/ie/

同样使事情复杂化的是,该项目目前尚未上线,而是在开发服务器上。例如, 我目前正在访问该项目:
http://dev.domain.com/devname/projectname/

我希望以上内容为 自动 301 重定向到:
http://dev.domain.com/devname/projectname/en/

这是我的 htaccess:
Options +FollowSymLinks -MultiViews
RewriteEngine on

# ----------------------------------------------------------------------
# MULTI LANGUAGE SUB DIRECTORY
# ----------------------------------------------------------------------

RewriteCond %{REQUEST_URI} !^/(en|sw)/
RewriteRule ^(.*)$ en/$1 [R=301,L]

# ----------------------------------------------------------------------
# Rewrite rules
# ----------------------------------------------------------------------

## CASE STUDIES ##
RewriteRule ^casestudies/([^/\.]+).html$ index.php?controller=contents&method=viewCasestudy&link=$1 [L,QSA]

## PRODUCTS ##
RewriteRule ^products/([^/\.]+).html$ index.php?controller=contents&method=viewProduct&link=$1 [L,QSA]

RewriteRule ^([a-z{2}]+)(/)?$ index.php?controller=contents&method=viewHome&lang=$1 [L,QSA] # Default load
RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome [L,QSA] # Default load

以上实际上会重定向到:
http://dev.domain.com/home/webserver_dir/devname/projectname/en/

..如果我使用 RewriteBase 它似乎只是转到...
http://dev.domain.com/en/

所以我的问题:我如何让语言 URL 相对于它在我的开发服务器上的目录正确工作,然后理想情况下在没有任何环境特定规则的情况下上线时可以工作。

奖金问题:我是否需要在所有后续重写规则之前添加 ([a-z{2}]+) 位,或者我是否可以捕获所有会影响所有进一步规则的内容?

编辑 - - - - - - - - - - - - - - -

我已按照建议将其缩减为以下内容...
Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteBase /devname/projectname/

RewriteCond %{REQUEST_URI} !^/(en|sw)(/|$) [NC]
RewriteRule ^(.*)$ en/$1 [R=301,L]
RewriteRule ^([a-z]{2})/?$ index.php?controller=contents&method=viewHome&lang=$1 [NC,L,QSA] # Default load

...但现在它重定向到 http://dev.domain.com/devname/projectname/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/ , 有任何想法吗?

最佳答案

您是否尝试过以下链接中的答案?它应该做你想要实现的目标。

Endless Redirect Loop by htaccess rules multi language

RewriteEngine On
RewriteBase /

# empty url -> redirect to en/
RewriteCond %{QUERY_STRING} !lang=(en|de)
RewriteRule ^$ en/ [R=301,L]

# url is ONLY '/en' or '/de' -> redirect to /en/ or /de/ (adding slash)
RewriteRule ^(en|de)$ $1/ [R=301,L]

# now all urls have en/ de/ -> parse them
RewriteRule ^(en|de)/(.*)$ $2?lang=$1&%{query_STRING} [L]

关于.htaccess - 带有子目录的 htaccess 多语言站点,默认为 301,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com