我正在尝试扁平化我的网站结构。我的路径类似于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]
答案 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)";
}