Php .htaccess重定向问题,带有语言修饰符和不同的后端重定向
以下是我想做的一些例子:Php .htaccess重定向问题,带有语言修饰符和不同的后端重定向,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,以下是我想做的一些例子: 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 %{REQ
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/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文件是这样加载的,mod_重写可能不会破坏这一点。您可以使用:
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]
这导致了一个重定向循环:我们越来越接近了,但是也允许使用/en/index和/en_或_de/backend。此外,/backend应该转到/de/backendeverything应该重定向到https。有效格式为/de/index--/en/index--de/backend--en/backend。我的js包也有奇怪的错误?are/index(应该转到de/index)或/backend(应该转到de/backend/)无效。其他所有内容都是/de/index(除了js/css内容?!)我对这些评论感到困惑,这就是为什么我建议编辑这个问题并澄清所有这些情况。好吧,现在是这样的:/de/backend转到de/index/这是错误的,而且,我所有的js文件都像这样被包含在
中,都被破坏了…css很好…谢谢你到目前为止所做的一切,非常感谢。。。