Php .htaccess用于重写个人系统
使用mod_rewrite,我无法完全理解我想要做什么 我希望能够键入url,例如: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
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
?>