Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
.htaccess将example.com重定向到example.com/admin\u面板_.htaccess - Fatal编程技术网

.htaccess将example.com重定向到example.com/admin\u面板

.htaccess将example.com重定向到example.com/admin\u面板,.htaccess,.htaccess,我想从“example.com”、“www.example.com”、“example2.com”和“www.example2.com”重定向到“”,我尝试了以下方法: Options -Indexes Options +FollowSymLinks RewriteEngine On <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^www.example2.eu/index\.php

我想从“example.com”、“www.example.com”、“example2.com”和“www.example2.com”重定向到“”,我尝试了以下方法:

Options -Indexes
Options +FollowSymLinks
RewriteEngine On
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{THE_REQUEST} ^www.example2.eu/index\.php
  RewriteCond %{THE_REQUEST} ^www.example.eu/index\.php [OR]
  RewriteCond %{THE_REQUEST} ^example2.eu/index\.php [OR]
  RewriteCond %{THE_REQUEST} ^example.eu/index\.php [OR]
  RewriteRule ^(.*)$ http://www.example.eu/admin_panel/index\.php$1 [L,R=301]
</IfModule>
选项-索引
选项+FollowSymLinks
重新启动发动机
重新启动发动机
重写cond%{THE_REQUEST}^www.example2.eu/index\.php
RewriteCond%{THE_REQUEST}^www.example.eu/index\.php[或]
RewriteCond%{THE_REQUEST}^example2.eu/index\.php[或]
RewriteCond%{THE_REQUEST}^example.eu/index\.php[或]
重写规则^(.*)$http://www.example.eu/admin_panel/index\.php$1[L,R=301]

但是它不起作用

你的问题很模糊,因为它包含矛盾。例如,不清楚如何处理请求中的路径。
/index.php
是否要求应用重写

鉴于这一点和模糊的信息,我只能向您指出大致的方向:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example2\.eu$ [OR]
RewriteCond %{HTTP_HOST} ^example2\.eu$ [OR]
RewriteCond %{HTTP_HOST} ^example\.eu$
RewriteRule ^/?(.*)$ http://www.example.eu/admin_panel/$1 [R=301]

RewriteCond %{HTTP_HOST} ^www\.example\.eu$
RewriteCond %{THE_REQUEST} !^/admin_panel
RewriteRule ^/?(.*)$ http://www.example.eu/admin_panel/$1 [R=301]
注意,我删除了主机名“www.example.eu”的条件测试,因为它会导致无休止的重写规则

给定的代码片段仅作为起点。它应该可以工作,但我没有亲自测试。它应该在http服务器主机配置或动态配置文件(“.htaccess”)中同样工作


还有一个一般性的注释:您应该总是更喜欢将这些规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实降低了http服务器的速度。只有在您无法访问真正的http服务器主机配置(读:真正廉价的服务提供商)或坚持编写自己的规则的应用程序(这显然是一个安全噩梦)的情况下,才提供它们作为最后一个选项

为了确保
[或]
运算符的位置很奇怪,您需要在第一个条件之后有一个运算符,在最后一个条件之后没有运算符。除此之外:
%{the_REQUEST}
不包含请求的主机名,而只包含请求的路径。这是有明确记录的。你没有读过你使用的工具的文档吗?我收到了“太多重定向错误”,在链接中,它是
https://example.eu/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/admin_panel/ …
不,我怀疑你是否真的使用了我发布的代码。我假设您使用了一个修改过的版本,在条件中仍然包含所有四个主机名?我之所以改变这一点是有原因的,因为这显然需要导致无休止的重写循环。请尝试使用我实际提供的代码片段,而不是类似的代码片段,然后从那里开始工作。