我正在编写一个基本的小 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