htaccess:删除url部分可提供内部服务器访问权限

时间:2018-10-23 09:18:57

标签: apache .htaccess

我正在尝试扁平化我的网站结构。我的路径类似于mydomain.com/clearos/ClearOS_7.x/7.4/README,我想更改为/clearos/ClearOS_7.x/README。不久前,我通过将文件夹7.4链接回/ClearOS_7.x来实现此目的,并且可以正常工作(某些Web爬网程序或我认为/7.4/7.4/等的人除外。

我尝试添加不同的.htaccess规则,但是我尝试的每个规则都会给出一个HTTP 500内部服务器错误。 .htaccess位于文档根目录中,这些是我尝试过的(单独):

RewriteEngine on
RewriteRule (.*)/7.4/(.*) $1/$2 [R=301]
RewriteRule (.*)/7\.4/(.*) $1/$2 [R=301]
RewriteRule ^clearos/ClearOS_7\.x/7\.4/(.*)$ clearos/ClearOS_7.x/$1 [R=301,L]

这三种形式似乎都可以在https://htaccess.madewithlove.be/的.htaccess检查器中完成我想要的工作

如果相关,我正在使用Apache 2.4

任何帮助将不胜感激。谢谢,尼克。

[编辑]

嗯。我看到了

AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

但是如果我以后有一个http-> https重写规则,它就可以正常工作。不知道发生了什么。需要更多调查。

玩一些,然后将301更改为302,

RewriteRule ^(.*)/7.4/(.*) $1/$2 [NC,R=302]

它一直将mydomain.com/clearos/ClearOS_7.x/7.4/README重写为mydomain.com/var/www/html/clearos/ClearOS_7.x/README。我曾尝试让Firefox忘记该站点,但是现在,无论我做什么,我都一样。

[/ edit]

1 个答案:

答案 0 :(得分:0)

好的,答案似乎是添加:

use Win32 qw( );
my ($in_enc, $out_enc);
BEGIN {
   $in_enc  = "cp".Win32::GetConsoleCP();
   $out_enc = "cp".Win32::GetConsoleOutputCP();
   binmode STDIN,  ":encoding($in_enc)";
   binmode STDOUT, ":encoding($out_enc)";
   binmode STDERR, ":encoding($out_enc)";
}