2010-09-27 13 views
2

Je suis en train d'utiliser http://www.example.com/news/id/21/title/top-10-things/?page= 1 pour envoyer le paramètre de page et il ne fonctionne pas en php

ci-dessous est mon paramètre dans le fichier .htaccess

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4 
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2 
RewriteRule ^news/$ /news.php 
+1

Qu'est-ce qui ne fonctionne pas exactement? 'page' n'est pas contenu dans' $ _GET' ou quoi? –

Répondre

3

Essayez d'ajouter le %{QUERY_STRING} aux URL de votre htaccess.

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4&%{QUERY_STRING} 
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2&%{QUERY_STRING} 
RewriteRule ^news/$ /news.php&%{QUERY_STRING} 

Comme Daniel a noté, vous pouvez également utiliser le mod_rewrite qsappend ou QSA drapeau à cet effet. REF: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4 [QSA] 
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2 [QSA] 
RewriteRule ^news/$ /news.php [QSA] 
+3

Vous pouvez utiliser l'indicateur [QSA] (query string append) à la place. –

1

Réglez le QSA flag pour obtenir la requête demandée automatiquement ajoutée à celle dans l'URL de substitution:

RewriteRule ^news/(.*)/(.*)/(.*)/(.*)/$ /news.php?$1=$2&$3=$4 [QSA] 
RewriteRule ^news/(.*)/(.*)/$ /news.php?$1=$2 [QSA] 
RewriteRule ^news/$ /news.php [QSA] 

De plus, vous ne devriez pas utiliser .* si vous pouvez être plus précis. Dans ce cas, l'utilisation [^/]+ évite au lieu retours en arrière inutile:

RewriteRule ^news/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /news.php?$1=$2&$3=$4 [QSA] 
RewriteRule ^news/([^/]+)/([^/]+)/$ /news.php?$1=$2 [QSA] 
RewriteRule ^news/$ /news.php [QSA] 

Et pour une solution générale pour un nombre arbitraire ou paramètres, voir Rewriting an arbitrary number of path segments to query parameters.