php中的查询字符串处理

php中的查询字符串处理,php,query-string,validating,Php,Query String,Validating,可以通过.htaccess将查询发送到另一个文件吗? 稍微解释一下: index.php像这样处理所有页面: switch($page) { case 'index': require_once START . '/includes/pages/index.php'; break; case 'another': require_once START . '/includes/pages/another.php'; break;

可以通过.htaccess将查询发送到另一个文件吗? 稍微解释一下:

index.php像这样处理所有页面:

switch($page) {
    case 'index':
        require_once START . '/includes/pages/index.php';
    break;

    case 'another':
        require_once START . '/includes/pages/another.php';
    break;
       and so on...
在.htaccess中:

RewriteRule ^index$ index.php?page=index [L]
RewriteRule ^another$ index.php?page=another [L]
链接(例如,localhost/84ss7d41):

因此在/includes/pages/index.php中:

RewriteRule ^(.*)$ index.php?QUERY_STRING=$1 [L]
if ($_GET['QUERY_STRING']) {
$_SERVER['QUERY_STRING'] = $_GET['QUERY_STRING'];
$query_string = check_input($_SERVER['QUERY_STRING']);
    //checking/validating processing further...
如何使像这样的链接localhost/84ss7d41以与现在相同的方式工作,但没有index.php?我正在尝试分离我的“项目”,如果发生了什么事情(文件意外删除),检查/验证数据的工作方式相同,没有主脚本,就像:

if (main project file index.php/ || /includes/pages/index.php doesn't exist) {
  check/validate data with reserve.php
}
这会将所有与现有文件(例如图像)不匹配的请求重定向到
index.php
,然后您可以在那里使用
$\u服务器[“请求URI”]
来决定如何操作。这是前端控制器模式的实现

此外,如果apache找不到
index.php
,则请求将转发到
reserve.php

尽管如此,构建这种冗余并不一定是“正确”的做法(如果reserve.php也丢失了怎么办?)。对
index.php
实施适当的访问控制可能是更好的方法

这会将所有与现有文件(例如图像)不匹配的请求重定向到
index.php
,然后您可以在那里使用
$\u服务器[“请求URI”]
来决定如何操作。这是前端控制器模式的实现

此外,如果apache找不到
index.php
,则请求将转发到
reserve.php


尽管如此,构建这种冗余并不一定是“正确”的做法(如果reserve.php也丢失了怎么办?)。对
index.php
实施适当的访问控制可能是一种更好的方法。

如果希望以后避免麻烦,请不要覆盖
$\u服务器
数组的成员。你想要达到的目标应该是可能的,但你必须更清楚地说明你想要达到的目标。你能澄清你的问题吗?您想创建像
localhost/84ss7d41
这样的链接,还是想在index.php不存在时重定向用户?你想要什么?@MahanGM完全正确,只要index.php没有exists@ZeroSuf3r,应该至少有一个
索引
页面来处理查询。我不知道您的应用程序体系结构是什么,但我认为标准的方法是在您的项目中有一个主要页面。如果希望以后避免麻烦,请不要覆盖
$\u服务器
阵列的成员。你想要达到的目标应该是可能的,但你必须更清楚地说明你想要达到的目标。你能澄清你的问题吗?您想创建像
localhost/84ss7d41
这样的链接,还是想在index.php不存在时重定向用户?你想要什么?@MahanGM完全正确,只要index.php没有exists@ZeroSuf3r,应该至少有一个
索引
页面来处理查询。我不知道你的应用程序架构是什么,但我认为标准的方法是在你的项目中有一个主要页面。这显然会导致一个“index.php”,但这里称为“controller.php”?事实上,这是我在这里没有得到的问题。为什么要杀了主脚本?除此之外:我喜欢前端控制器模式:),这显然会导致一个“index.php”,但这里称为“controller.php”?事实上,这是我在这里没有得到的问题。为什么要杀了主脚本?除此之外:我喜欢前面的控制器模式:)
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*) /index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /reserve.php [L]