2017-10-03 15 views
0

Je suis nouveau dans Apache2 et PHP, depuis quelques jours, j'essaie de trouver un problème ce qui ne va pas avec mon code ou la configuration du serveur. Quand je suis en cours d'exécution d'une simple ligne telle que:Problèmes de routage PHP 7.1

$uri = $_REQUEST['URI']; 
echo("$uri"); 

Je reçois une erreur:

Notice: Undefined index: URI in /var/www/html/... 

J'ai besoin $ _REQUEST [ 'URI] pour construire mon propre routeur. Le fichier .htaccess est ajouté au projet, donc apache devrait savoir que je remplacerai les routes. BTW, il ressemble à:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [NC,L] 

Bien sûr, je courais script navigateur Web, de sorte que le _REQUEST $ devrait être défini [ 'URI]. Problème apparaître sur: PHP 7.1 + Apache2.4 + Ubuntu16.04

Quelqu'un pourrait-il aider?

+1

URI est une variable de chaîne de requête, n'est-ce pas? I.e http://example.com/?URI=something. Dans tous les cas, je suis presque sûr que vous voulez l'utiliser comme la règle de réécriture: 'RewriteRule^(. *) $ Index.php? URI =% {REQUEST_URI} [NC, QSA, L]' –

+0

Il ne le fait pas travail. Le but est d'obtenir une URL correcte quand quelqu'un tapera dans le navigateur ie example.com/index ou example.com/first_subpage, donc le $ _REQUEST ['URI'] devrait retourner: example.com/index ou example.com/first_subpage dépend de quel utilisateur va taper comme URL. C'est le cas le plus simple du routage de pages Web. La règle que vous avez réécrite fait référence à la transmission d'un argument via l'URL, ce n'est pas ce que j'essaie de faire. – okarmusk

Répondre

0

Dans votre fichier .htaccess ajoutez juste

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] 
</IfModule> 

ensuite dans votre fichier principal index.php juste attraper le url comme

<?php echo $_GET['url']; ?> 

donc, si l'utilisateur ouvre une page comme example.com/test alors la la sortie sera test

+0

Ça ne marche pas trop, le résultat est le même que dans les réponses précédentes données par Eduardo Escobar et Croises. Je reçois toujours des informations: Avis: Indéfini index: URI dans/var/www/html ... – okarmusk

+0

il devrait être url pas uri, essayez 'print ($ _ GET);' pour voir ce qui vient dans la demande –

+0

Je vois la dépendance . Les paramètres $ _GET ont été nommés à tort. Maintenant ça marche! Merci beaucoup bro :) – okarmusk

0

Comme @EduardoEscobar dit, ce que vous essayez de faire est la suivante:

$uri = $_SERVER['REQUEST_URI']; 
echo("$uri");