Maison  >  Questions et réponses  >  le corps du texte

URL conviviales en anglais et en espagnol en PHP et htaccess

J'ai un site internet en anglais et en espagnol, chaque langue a son propre dossier, par exemple :

news.com/en/ for English
news.com/es/ for Spanish

La liste des dernières actualités est affichée sur :

news.com/en/latest-news.php for English
news.com/es/ultimas-noticias.php for Spanish

Lorsqu'un utilisateur clique sur un article pour lire l'article en entier, il est lié pour lire l'article en entier à partir d'ici (en utilisant un slug stocké dans MySQL) comme ceci (par exemple) :

news.com/en/general/news/europe/2022/10/22/this-is-a-nice-title

Tous les articles utilisent la page suivante pour les limaces :

news.com/en/read-article.php for English
news.com/es/leer-noticia.php for Spanish

Sur ces pages, le script interroge MySQL pour rechercher des slugs et affiche l'article complet. Le problème est que, pour une raison que je ne comprends pas, je n’obtiens aucun résultat.

Si je déplace le fichier vers le répertoire racine :

news.com/read-article.php for English
news.com/leer-noticia.php for Spanish

Ensuite, cela a bien fonctionné, mais en ajoutant ces fichiers dans des sous-dossiers, je n'ai obtenu aucun résultat.

Il est important de noter que les slugs sont enregistrés dans MySQL comme ceci :

general/news/europe/2022/10/22/this-is-a-nice-title

Parce qu'ils sont plus beaux que les tirets et que la date est la date de publication, elle changera à chaque publication.

Voici le code .htaccess que j'ai créé pour ces sous-dossiers :

Mise à jour : le problème concerne uniquement htaccess et même si j'ai répondu à ma propre question, il n'est toujours pas complètement résolu

RewriteEngine On

RewriteRule ^(en)/([a-zA-Z0-9-]+)$ /read-article.php?id= [L]

RewriteRule ^(es)/([a-zA-Z0-9-]+)$ /leer-noticia.php?id= [L]

Une idée d'où se situe le problème ?

P粉969253139P粉969253139380 Il y a quelques jours468

répondre à tous(1)je répondrai

  • P粉281089485

    P粉2810894852023-09-09 09:29:40

    Pour ceux qui cherchent de l'aide car ils ont le même problème et je suis sûr qu'ils sont nombreux :

    J'ai pu le réparer d'une manière avec beaucoup de chance, mais certainement pas de manière professionnelle, c'est peut-être la mauvaise façon, mais ça marche. Il existe de nombreuses questions similaires sur ce site Web sans réponse, il semble donc que la personne moyenne ne sache pas grand-chose sur htaccess.

    La solution que j'ai trouvée est :

    RewriteEngine on
    RewriteRule ^en/([a-zA-Z0-9-/]+)$ /en/read-article?slug=  [L]
    RewriteRule ^en/([a-zA-Z0-9-/]+)$ /en/leer-noticia?slug=  [L]

    Vous pouvez donc avoir un site Web en plusieurs langues et chaque langue est dans un sous-dossier, mais même si vous exploitez un site Web monolingue et utilisez des sous-dossiers, vous aurez certainement besoin de cette aide, exécutez simplement ce .htaccess, cela fonctionnera (modifier avec votre nom de fichier évidemment)

    Maintenant, nous devons absolument en savoir plus sur [L] dans le code, il y en a beaucoup d'autres comme celui-ci :

    Je ne comprends pas les commandes suivantes, si vous en avez besoin, mais vous pouvez certainement les trouver si vous demandez de l'aide, ou peut-être que certaines personnes ici pourront partager leurs connaissances avec nous :

    DirectoryIndex home.php  
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    [L]
    Options +FollowSymLinks -MultiViews
    [QSA]

    Personne d'autre n'a répondu à cette question, c'est la même chose que la plupart des questions sur .htaccess et les URL conviviales, mais il y a au moins quelques trucs non professionnels ici, mais de toute façon je partage quelques connaissances noob parce que c'est l'idée principale de cette communauté, pas tout le monde est un professionnel, mais nous pouvons tous partager nos connaissances. S'il y a une meilleure réponse, je la marquerai certainement comme correcte

    répondre
    0
  • Annulerrépondre