0

私は基本的な小さなCMSを作成しており、RewriteRulesを使用して各リクエストをindex.phpにリダイレクトします。その後、残りのURIを解析し、リクエストされたサイトをまとめるためにさまざまなphpファイルを要求/インクルードします。URIの書き換えと解析は問題なく機能しているようですが、phpファイルをインクルードしようとすると、index.phpのすべての出力が消去され、インクルードされたphpファイルの出力のみが表示されます。

問題をテストするための基本的なスクリプトを作成しましたが、問題が見つかりません。

index.php

<?php
    if(isset($_GET['parameter_1']))
        $get_parameter_1 = $_GET['parameter_1'];

    if(isset($get_parameter_1))
    {
        echo "You favourite colour is ";
        if($get_parameter_1 == "red")
        {
            include('red.php');
        }
        else
        {
            echo "obviously not red.";
        }
    }
    else
    {
        echo "
            Parameter not set.
        ";
    }
?>

red.php

<?php
    echo "red";
?>

.htaccess

RewriteEngine on

RewriteBase /htaccess_testing/

RewriteRule \.(css|jpe?g|gif|png)$ - [L]
RewriteRule \.(php)$ - [L]

RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/htaccess_testing/$1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ /htaccess_testing/index.php?parameter_1=$1 [L]

www.example.com/htaccess_testing/をリクエストすると、「パラメータが設定されていません」と正しく表示されます。

www.example.com/htaccess_texting/blue/をリクエストすると、「お気に入りの色は明らかに赤ではありません」と正しく表示されます。

www.example.com/htaccess_testing/red/をリクエストすると、「赤」のみが表示されます。「好きな色は赤」ではなく。何をすべきか...

誰かが私の間違いを指摘できますか?ありがとう/K

4

1 に答える 1

1

これは、条件を指定したために発生します

RewriteCond %{REQUEST_FILENAME} !-f

つまり、ファイルが存在する場合は書き換えないでください。削除するだけ

UPD

あなたが置く必要があります

Options -MultiViews

あなたの初めに.htaccess

于 2012-06-04T01:12:12.027 に答える