2009-05-06 9 views
1

J'ai ce fichier .htaccess, qui ne fonctionne pas, quand je navegate à gotgage.local/catégorie/mesureurs/la partie de ce mesureurs de n'est pas passéhtaccess mal à

RewriteEngine On 
RewriteRule  ^/category/(.*?)/$ category.php?p=$1 [rn] 

Pour des raisons de tests le fichier category.php est juste dumping $ _POST, $ _GET et $ _SERVER c'est ce que je vois quand j'ouvre la page.

GET 
Array () 
POST 
Array () 
SERVER 
Array (
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19 
    [HTTP_ACCEPT_ENCODING] => gzip,deflate,bzip2,sdch 
    [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
    [HTTP_CACHE_CONTROL] => max-age=0 
    [HTTP_ACCEPT_LANGUAGE] => en-US,en 
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,*,utf-8 
    [HTTP_HOST] => gotgage.local 
    [HTTP_CONNECTION] => Keep-Alive 
    [PATH] => /usr/local/bin:/usr/bin:/bin 
    [SERVER_SIGNATURE] => Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch Server at gotgage.local Port 80 


    [SERVER_SOFTWARE] => Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch 
    [SERVER_NAME] => gotgage.local 
    [SERVER_ADDR] => 192.168.0.180 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 192.168.0.196 
    [DOCUMENT_ROOT] => /home/gotgage/www/ 
    [SERVER_ADMIN] => [no address given] 
    [SCRIPT_FILENAME] => /home/gotgage/www/category.php 
    [REMOTE_PORT] => 56793 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [REQUEST_METHOD] => GET 
    [QUERY_STRING] => 
    [REQUEST_URI] => /category/gages/ 
    [SCRIPT_NAME] => /category.php 
    [PATH_INFO] => /gages/ 
    [PATH_TRANSLATED] => /home/gotgage/www/gages/ 
    [PHP_SELF] => /category.php/gages/ 
    [REQUEST_TIME] => 1241579116 
    [argv] => Array 
     (
     ) 

    [argc] => 0) 

Techniquement, la redirection travaille mais je ne reçois pas les vars la page ci-dessous qui est le dumping est correct de la bonne page, mais mes vars ne sont pas transmises.

+0

Cela appartient à serverfault.com! –

+0

IDK, j'ai débattu cela moi-même, mais je pense que c'est plus de programmation que. Htaccess est plus de programmation, puis sysadmin. – UnkwnTech

Répondre

0

Je ne suis pas totalement sûr que c'est le problème, mais mettre les drapeaux comme "[rn]" n'est pas valide. drapeaux multiples doivent être séparés par des virgules, donc si vous essayez de mettre les deux R et N drapeaux, il devrait être [R,N]

+0

Cela n'a fait aucune différence, comme je l'ai mis à jour pour dire que la redirection est en cours, mais je ne reçois pas les vars – UnkwnTech

0

Il y a deux choses qui sont un peu clair:

1) Quel a été le correspondance destinée à la partie regex:

(.*?) 

qui est un peu redondant - en supposant que vous voulez simplement correspondre à quelque chose entre les barres obliques, les éléments suivants suffirait:

(.*) 

2) Vous définissez un drapeau de 'rn', qui ne semble pas être valide. Exemple de drapeaux valides sont:

[R] 
[N] 
[R,N] 

bien, je ne suis pas sûr que vous voulez vraiment utiliser R et N ensemble.

+0

(. *?) Est explicitement non gourmand. Dans ce cas son dicton me donne tout entre "catégorie /" et le premier caractère "/" que vous voyez après cela. Si vous utilisez la version gourmande que vous avez recommandée (. *), Vous risquez d'en saisir trop! Prenez l'exemple d'URL suivant "catégorie/foo/bar /": La version non gourmande aurait 1 $ = "toto" La version gourmande aurait 1 $ = "foo/bar" Bien qu'il _may_ soit correct dans ce cas pour sortir avec la version gourmande je pense que le non-gourmand est plus clair. –

+0

Ahh. Désolé pour le formatage. Je ne savais pas que les commentaires ne retenaient pas les espaces. Je m'excuse. –

1

Eh bien, ce qui suit a fonctionné pour moi. On dirait qu'il n'a pas aimé le / et les [rn] ont jeté des erreurs de syntaxe pour moi.

RewriteEngine On 
RewriteRule ^category/(.*?)/$ category.php?p=$1 

Note: qu'il aurait probablement dû être [R,N] de toute façon, mais encore une fois, ils ne sont pas nécessaires dans ce cas.


RewriteRule Flags Documentation - montre pourquoi vous avez probablement ne voulais pas utiliser R ou N, mais il peut y avoir quelque chose que nous ne savons pas.
RewriteRule Documentation - Semble n'indiquer aucun / dans les règles de réécriture .htaccess (s'il y a une base de réécriture). Quoi qu'il en soit, essayez la règle avec et sans le /, pour moi, cela ne fonctionnait que sans.

+0

J'ai copié et collé pour m'assurer que je n'ai pas fait de faute de frappe et je reçois toujours le même problème ... – UnkwnTech

+0

Essayez de construire jusqu'à ce que. Obtenez quelque chose qui fonctionne, puis lentement, plus complexe, mot par mot pour voir ce qui cause votre problème. –