.htaccess 使用. htaccess重定向子文件夹的根目录,但不重定向该子文件夹下的文件夹

628mspwn  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(182)

我有一个多语言的Modx站点。我正在尝试为该URL进行重定向

https://example.com/fi/


https://example.com/fi/something
但我只想重定向“子文件夹”的根目录,而不是“www.example.com“或其他任何文件夹下的任何example.com/fi/products。
当前的htaccess文件如下所示

RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteBase /

#Check for Fi
RewriteCond %{HTTP_HOST} .*example.com [NC]
RewriteCond %{HTTP:Accept-Language} ^fi [NC]
RewriteRule ^$ http://%{HTTP_HOST}/fi/ [L,R=301]

# Default to En
RewriteCond %{HTTP_HOST} .*example.com [NC]
RewriteRule ^$ https://%{HTTP_HOST}/en/ [L,R=301]

# Fix current links

RewriteCond %{HTTP_HOST} example.com [NC]
RewriteCond %{REQUEST_URI} !/en
RewriteCond %{REQUEST_URI} !/fi
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /en/$1 [L]

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

如果我试图

RedirectMatch 301 /fi /fi/something

最后URL中出现了/fi/something的无限循环

z4bn682m

z4bn682m1#

重写循环的存在是因为你的目标URL /fi/something显然再次与你的模式/fi匹配...
实际上,您根本不想在这里使用RedirectMatch,而是使用一个简单的RewriteRule

RewriteRule ^/?fi/?$ /fi/something [R=301,L]

您希望将该规则添加到现有配置文件中注解# Fix current links的上方。

相关问题