2012-04-26 1 views
1

Je suis nouveau à URlRewriting et j'ai eu quelques problèmes à réécrire mes URL, j'ai une seule page d'index .php dans laquelle le contenu est rempli en utilisant php en fonction des variables url.URL dynamique réécriture .htaccess

Mon problème est que je n'arrive pas à trouver les expressions correctes pour le faire fonctionner. Pour ma page d'accueil Je suis seulement l'envoi de 1 variables comme

"index.php?page=home" 

mais pour d'autres pages que je suis en utilisant jusqu'à 4 variables comme « index.php? Page = à propos & content = about-id = & nouvelles 27 & pn = 1"

maintenant, je suis arrivé aussi loin que d'obtenir 1 ou 2, mais pas travailler séparément ensemble à l'aide:

RewriteRule ^((.*)+)$ index.php?page=$1 

oU

RewriteRule ^(.*)/(.*)$ index.php?page=$1&content=$2 

J'ai regardé autour de google et Stackoverflow pour les derniers jours mais je n'arrive pas à trouver une solution de travail, est-ce que quelqu'un a des idées sur comment faire fonctionner cela? Vive

+0

Je ne pense pas que vous avez vraiment regardé google. C'est un problème très commun. Et il existe des sites qui décrivent comment gérer ce problème. – Stony

Répondre

1

Essayez:

#Make sure it's not an actual file 
RewriteCond %{REQUEST_FILENAME} !-f 

#Make sure its not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 

#Rewrite the request to index.php 
RewriteRule ^(.*)$ index.php?/$1 [L] 

Vous pouvez alors regarder la variable $ _SERVER [ 'REQUEST_URI'] pour voir ce qui a été demandé.

Cela devrait fonctionner pour vous, laissez-moi savoir comment vous allez.

2

Tout ce que vous avez besoin est une réécriture:

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

puis dans votre fichier index.php votre partagé la route en piecies:

$route = (!isset($_GET['route']))?'':$_GET['route']); 
$parts = explode('/', $route); 

So your old urls like this: 
index.php?page=home 
index.php?page=about&content=about-news&id=27&pn=1 
index.php?page=$1 
index.php?page=$1&content=$2 

Become: 
Example: `http://example.com/controller/action/do/value` 
or  `http://example.com/$parts[0]/$parts[1]/$parts[2]/$parts[3]/$parts[4]` 

Tenue à l'idée de controller-> action-> do-> value son facile d'assigner des routes.

?page= seront votre contrôleur

?content= seront votre l'action

?id= sera votre sous-action | fais | valeur ect

+0

merci, l'essayer – Kezune

+0

Mon héros, ne fonctionnait pas alors j'ai joué avec mon code, semble que j'avais mis un =! au lieu de! =, retournant à son tour "1" au lieu de mes variables; fonctionnant comme prévu maintenant, merci! – Kezune