0

すべてを説明するために着信する長いテキスト (多くのリンクを投稿することはできません。ただし、すべての ermj リンクは有効にする必要があります)

.htaccess ファイルを使用すると表示される奇妙な問題があります

サーバーのルート フォルダーは、メイン ドメイン ( www.example.com.br ) 用に設定されています。そのルートのフォルダー/ermjを指しているセカンダリ ドメイン ( www.ermj.com.br ) があります。したがって、ermjフォルダー (例: file.jpg ) にファイルがある場合、www.ermj.com.br/ file.jpgまたはwww.example.com.br/ermj/file.jpgのいずれかでアクセスできます。

このエラーのテスト用にこのフォルダーを作成しました

このフォルダ内には3つのファイルがあります

index.php

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

echo "Codigo = $a"; 
?>

home.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 im にアクセスしようとすると、 index.php?codigo=subfolder/にアクセスすると、インデックス ファイルの結果が表示されます

Codigo = subfolder/

home.phpファイルにアクセスしようとすると問題が発生し、動作しません

www.ermj.com.br/teste/home.phpは、 index.php?codigo=home.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