.htaccess 语言修饰符和不同后端重定向的重定向问题


.htaccess redirect issue with language modifier and different backend redirect

以下是我想做的一些例子:

www.example.de --> https://www.example.de/de/index
http://www.example.de -->https://www.example.de/de/index
https://www.example.de -->https://www.example.de/de/index

我正在使用以下规则来做到这一点:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{SERVER_PORT}   !^443$
RewriteRule  (.*)  https://%{HTTP_HOST}/de/index  [L] 
RewriteCond %{HTTP_HOST} !^www'.example'.de
RewriteRule (.*) http://www.example.de/de/index [R=301,L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?lang=$1&page=$2 [L,QSA]

但是,我被困在这些条件下:

(http(s)://)www.example.de/ANYSTRING --> https://www.example.de/de/index
(http(s)://)www.example.de/(anything not de or en)/ANYSTRING --> https://www.example.de/de/index

我还有一个后端,看起来像这样:https://www.example.de/backend/manage-stuff.php

这也应该包含语言修饰符,无法弄清楚这应该如何实现。任何提示都受到高度赞赏。

//编辑

更多需要澄清的示例:

https://www.example.de/anything (not backend) --> https://www.example.de/de/index
https://www.example.de/en/anything --> https://www.example.de/en/index
https://www.example.de/de/anything --> https://www.example.de/de/index
https://www.example.de/backend --> https://www.example.de/de/backend
https://www.example.de/anything/backend --> https://www.example.de/de/backend

JS/CSS 文件是这样加载的 https://www.example.de/inc/template/temp3/js/jsfile.js mod_rewrite可能不会破坏它。

您可以使用:

RewriteEngine on
RewriteBase /
RewriteRule ^index'.php$ - [L]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{THE_REQUEST} !/index [NC]
RewriteRule ^(en|de) https://www.example.de/$1/index [R=301,L]
RewriteRule (?:^|/)(backend)(?:/|$) https://www.example.de/de/$1 [R=301,L,NC]
RewriteRule ^(?!backend|en|de). https://www.example.de/de/index [R=301,L,NC]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?lang=$1&page=$2 [L,QSA]