Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess用于重写个人系统_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php .htaccess用于重写个人系统

Php .htaccess用于重写个人系统,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,使用mod_rewrite,我无法完全理解我想要做什么 我希望能够键入url,例如: http://site.com/project/project-title/people/alex-coady 或 http://site.com/project/project-title/tasks/task-list-title 然后将在handle.php中使用以下可用变量处理: $\u GET['project']将等于“project title” $\u GET['people']等于'alex

使用mod_rewrite,我无法完全理解我想要做什么

我希望能够键入url,例如:

http://site.com/project/project-title/people/alex-coady

http://site.com/project/project-title/tasks/task-list-title

然后将在
handle.php
中使用以下可用变量处理:

$\u GET['project']将等于“project title”

$\u GET['people']等于'alex coady'
(第一个示例)

$\u GET['tasks']将等于'task list title'
(第二个示例)

重申:所有请求都将由
handle.php
管理,但是如果在URL上添加了任何其他变量,则首先会检查关键字
人员
任务
项目
(以及我手动添加的任何其他项目),并以上面建议的形式添加紧随其后的值

http://site.com/handle.php?project=project-title&people=alex coady&tasks=
(第一个示例)

多谢各位

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^project/([^/]+)/([^/]+)/([^/]+)$ handle.php?project=$1&people=$2&tasks=$3 [L]

handle.php中

 list($project, $task, $people, $foo, $bar) = explode('/', $_GET['data]);

我将如何处理这个问题,就是忘记项目、人员、任务,并将所有内容传递到handle.php,然后在那里进行处理,否则将来您可能会为添加的每个请求都有一个重写规则

因此,您的mod_重写将如下所示:

RewriteEngine On
Options -Indexes

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ handle.php?route=$1 [L,QSA]
你的手柄/路由器看起来像这样(示例)



这就是我最初的工作方式,我觉得我应该更好地分离.htaccess文件中的变量,但你是对的-谢谢你.np,这就是99.9%的MVC模式的工作方式,更好、更系统地在脚本中使用URL,然后让mod_rewire这样的局外人来处理我们的路由
RewriteEngine On
Options -Indexes

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ handle.php?route=$1 [L,QSA]
<?php 
//Get Route from request
$route = (!isset($_GET['route']))?'':$_GET['route'];

/*Split the parts of the route*/
$parts = explode('/', $route,4);

//http://site.com/project/project-title/people/alex-coady
//http://site.com/project/project-title/tasks/task-list-title

$project    = (isset($parts[0]))?$parts[0]:null; //project/
$p_title    = (isset($parts[1]))?$parts[1]:null; //project-title/
$action     = (isset($parts[2]))?$parts[2]:null; //people or tasks
$sub_action = (isset($parts[3]))?$parts[3]:null; //alex-coady or task-list-title

//Then work with the above variables
?>