0

输入长文本以解释一切(不能发布很多链接。但所有 ermj 链接都应该是活动的)

当我使用 .htaccess 文件时出现一个奇怪的问题

服务器根文件夹是为我的主域(www.example.com.br)设置的。我有一个二级域 ( www.ermj.com.br ),它指向该根目录中的文件夹/ermj。因此,当我在ermj文件夹中有一个文件(例如:file.jpg)时,我可以使用www.ermj.com.br/file.jpgwww.example.com.br/ermj/file.jpg访问它

现在我创建了这个文件夹来测试这个错误

在这个文件夹中,我有 3 个文件

索引.php

<?php 
$a = $_GET["codigo"];

echo "Codigo = $a"; 
?>

主页.php

<?php
echo "home.php";
?>

.htaccess

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?codigo=$1

这个 .htaccess 的想法是将任何子文件夹和/或文件链接转换为 index.php 文件的参数,除非子文件夹/文件存在,所以如果我尝试访问www.ermj.com.br/teste/subfolder我实际上访问index.php?codigo=subfolder/它将显示索引文件的结果

Codigo = subfolder/

当我尝试访问home.php文件时出现问题,它不起作用

www.ermj.com.br/teste/home.php 打印Codigo = home.php这是index.php?codigo=home.php的内容

我发现我可以通过在地址上写入 ermj 文件夹来访问 home.php

www.ermj.com.br/ermj/teste/home.php - 现在打印正确的内容 - home.php 就像突然二级域正在查看文件的主域根文件夹。.htaccess 规则在这种情况下仍然有效

www.ermj.com.br/ermj/teste/subfolder/ 打印Codigo = subfolder/

父文件夹中没有其他 .htaccess 并且如果 .htaccess 从 teste 文件夹中删除。没有问题,所有文件都可以被二级域访问,不用写文件夹

所以。在保持 .htaccess 存活的同时,我能做些什么来解决这个问题?

(编辑 1)我做了一些进一步的测试,更改了 .htaccess 以向我展示正在搜索的条件是什么

新的.htaccess

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?codigo=%{SCRIPT_FILENAME}

所以它现在发送 %{SCRIPT_FILENAME} 作为参数,所以我可以打印它

所以,现在访问www.ermj.com.br/teste/home.php打印 Codigo = e:/home/example/Web/teste/home.php。但该文件位于e:/home/example/Web/ermj/teste/home.php

为什么变量 %{SCRIPT_FILENAME} 会抑制辅助域文件夹?我该如何解决?

4

0 回答 0