Проблема перенаправления .htaccess с модификатором языка и другим перенаправлением бэкэнда

0

Вот несколько примеров того, что я хочу сделать:

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, возможно, не сломает это.

Теги:
.htaccess
mod-rewrite

1 ответ

2

Вы можете использовать:

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]
  • 0
    Это приводит к петле перенаправления: ссылка
  • 0
    мы приближаемся, но / en / index также разрешен и / en_OR_de / backend также. Дополнительно / backend должен идти в / de / backend
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню