Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess重定向问题,带有语言修饰符和不同的后端重定向_Php_.htaccess_Mod Rewrite - Fatal编程技术网

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很好…谢谢你到目前为止所做的一切,非常感谢。。。