2012-04-07 2 views
0

Je n'arrive pas à comprendre exactement ce que je veux faire avec mod_rewrite..htaccess pour réécrire un système personnel

Je veux être en mesure de taper une URL telle que:

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

ou

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

qui sera ensuite traité à handle.php avec les variables disponibles, telles que:

$_GET['project'] would equal 'project-title'

$_GET['people'] would equal 'alex-coady' (premier exemple)

$_GET['tasks'] would equal 'task-list-title' (deuxième exemple)

Répétons: Toutes les demandes seront gérées par handle.php, mais si sont cloués des variables supplémentaires sur l'URL, d'abord le mot-clé people, tasks , projects (et tous les autres que j'ajouterai manuellement) seraient vérifiés et la valeur immédiatement après eux serait ajoutée dans la forme suggérée ci-dessus.

ie. http://site.com/handle.php?project=project-title&people=alex-coady&tasks= (premier exemple)

Merci.

Répondre

1

Comment je gérer cela est d'oublier projet, les gens, les tâches et passer tout à l'handle.php et processus il là, sinon vous pourriez finir par avoir une règle de réécriture pour chaque demande que vous ajoutez dans le futur.

Ainsi, votre mod_rewrite ressemblerait à ceci:

RewriteEngine On 
Options -Indexes 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ handle.php?route=$1 [L,QSA] 

Et votre poignée/routeur ressemblerait à quelque chose comme ceci (exemple)

<?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 
?> 
+0

Voilà comment je l'origine avais fonctionner, je me sentais comme si je Il vaudrait mieux séparer les variables dans le fichier .htaccess mais vous avez raison - merci. – Alex

+1

np, c'est ainsi que 99,9% des modèles MVC fonctionnent, c'est mieux et plus systématique de travailler avec les URL du script puis de laisser un ** outsider ** comme mod_rewire gérer nos routes –

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

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

Ou

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

RewriteRule ^project/(.*) handle.php?data=$1 [L] 

Et handle.php

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