2 votes

Que dois-je faire pour créer de jolies URL en utilisant .htaccess pour mon scénario spécifique ?

Voici mon dossier complet :

  1. mvcframework dans le répertoire /var/www/html/.

  2. mvcframework contient un répertoire public avec index.php qui fait office de frontloader.

  3. Je crée un fichier .htaccess dans le répertoire public avec le code suivant :

    <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ index.php?$1 [QSA,L] </IfModule>

  4. J'y accède par l'intermédiaire de l'url de l'hôte virtuel mvcframe.local qui est configuré pour diriger vers le dossier public :

    <VirtualHost 127.0.0.3:80> ServerName mvcframe.local DocumentRoot /var/www/html/mvcframework/public

    <Directory /var/www/html/mvcframework>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog /var/www/html/mvcframework/mvc-error.log
    CustomLog /var/www/html/mvcframework/mvc-access.log combined

    </VirtualHost>

  5. Lorsque j'accède à http://mvcframe.local o http://mvcframe.local/ Le contenu du fichier index.php est affiché dans le dossier public index.php comme il se doit.

  6. Lorsque j'accède à http://mvcframe.local/?posts/hello qu'il produit :

    Requested URL = posts/hello

  7. Mais quand j'accède http://mvcframe.local/posts/hello en enlevant ?, ça donne :

    Not Found The requested URL was not found on this server.

    Apache/2.4.41 (Ubuntu) Server at mvcframe.local Port 80

J'essaie de trouver la solution en cherchant pendant 2 heures et je n'ai toujours pas trouvé la solution.

0voto

vasudeveloper001 Points 21

Bon, après avoir passé des heures à lire des tutoriels .htaccess, j'ai finalement réussi à comprendre mon erreur. Tout d'abord, aquí est la vidéo qui m'a aidé à comprendre mon erreur.

Voici ma solution :

<IfModule mod_rewrite.c>
  Options -Multiviews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule  ^(.+)$ index.php?$1 [QSA,L]
</IfModule>

Tout d'abord, je vérifie si le mod_rewrite est activé. Puis je fournis quelques options. Puis j'active le RewriteEngine qui est nécessaire pour activer les règles de réécriture. Puis je donne les conditions de réécriture pour [If no directory] et [If not file] pour la requête fournie, pour laquelle je réécris la règle en lui disant de vérifier toutes les chaînes qui ne se terminent pas par une extension ".", et de les diriger simplement vers index.php?$1.

En gros, tout ce qui contient mvcframe.local/quelque chose d'autre deviendra automatiquement mvcframe.local/index.php?quelque chose d'autre/quelque chose d'autre.

Pour ma configuration, index.php est le frontloader donc tout doit passer par ce fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X