我已经建立了一个带有自制MVC结构的网站,并且.htaccess的漂亮网址根本不起作用。
我在我的网站的根目录中有这个“前端控制器”(index.php
):
<?php
require_once('M/connect_sql.php');
if (!empty($_GET['page']) && is_file('C/'.$_GET['page'].'.php'))
{
include 'C/'.$_GET['page'].'.php';
}
else
{
include 'C/accueil.php';
}
$bdd = NULL;
C/
是我的控制器文件夹。
我的网址示例: http://domain.com/?page=restaurants&city=paris&CP=75001
page
参数用于我的控制器,&city=paris&CP=75001
是POST变量。
我已经测试了一个简单的重写规则,它运行良好。 我尝试了几个Rewrite规则,但没有一个正在运行。
以下是上述网址的示例:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.+/)/([^/.]+)/([^/.]+)/?$ /?page=$1&city=$2&CP=$3 [NC,L]
</IfModule>
我在每个文件夹(根,控制器,视图)中放置了.htaccess
,但我无法得到它。
自编辑以来的编辑:
这是我的新控制器,因为Entwicklerpages注意到一个安全漏洞。在此处找到此解决方案:http://kkovacs.eu/exploiting-web-development-worst-practices-file-inclusion
if ( isset($_REQUEST['page']) and ! is_null($_REQUEST['page']) )
{
$page = $_REQUEST['page'];
switch ($page) {
case 'restaurant':
include('C/restaurant.php');
break;
case 'restaurants':
include('C/restaurants.php');
break;
}
}
else {
include('C/accueil.php');
}
答案 0 :(得分:0)
请注意实施中的安全漏洞! 让用户决定包含哪些php文件绝不是一个好主意。
include 'C/'.$_GET['page'].'.php';
https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion
此外,我的网站的第二个想法。
PHP中的$_SERVER
变量有一个名为PATH_INFO
$_SERVER['PATH_INFO']
如果您的网站被称为index.php / your / params /和/ other / data
您可以通过&#39; /&#39;将其拆分。并获取所有数据。 使用ModRewrite
也可能更容易一点https://secure.php.net/manual/en/reserved.variables.server.php
我在自己的网站上使用它:http://www.entwicklerpages.de/Startseite.html(德语)