Heim  >  Fragen und Antworten  >  Hauptteil

Englisch- und spanischfreundliche URLs in PHP und htaccess

Ich habe eine Website in Englisch und Spanisch, jede Sprache hat ihren eigenen Ordner, zum Beispiel:

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

Die aktuelle Nachrichtenliste wird angezeigt unter:

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

Wenn ein Benutzer auf einen Artikel klickt, um den gesamten Artikel zu lesen, wird er von hier aus zum Lesen des gesamten Artikels verlinkt (unter Verwendung eines in MySQL gespeicherten Slugs), beispielsweise so:

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

Alle Artikel verwenden die folgende Seite für Schnecken:

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

Auf diesen Seiten fragt das Skript MySQL nach Slugs ab und zeigt den vollständigen Artikel an. Das Problem ist, dass ich aus irgendeinem Grund, den ich nicht verstehe, keine Ergebnisse erhalte.

Wenn ich die Datei in das Stammverzeichnis verschiebe:

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

Dann hat es gut funktioniert, aber das Hinzufügen dieser Dateien zu Unterordnern brachte keine Ergebnisse.

Wichtig ist, dass Slugs in MySQL wie folgt gespeichert werden:

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

Da sie besser aussehen als Bindestriche und das Datum das Datum der Veröffentlichung ist, ändert es sich mit jedem Beitrag.

Dies ist der .htaccess-Code, den ich für diese Unterordner erstellt habe:

Update: Das Problem tritt nur bei htaccess auf und obwohl ich meine eigene Frage beantwortet habe, ist es immer noch nicht vollständig gelöst

RewriteEngine On

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

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

Wissen Sie, was das Problem ist?

P粉969253139P粉969253139430 Tage vor506

Antworte allen(1)Ich werde antworten

  • P粉281089485

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

    对于那些寻求帮助的人,因为他们有同样的问题,而且我确信有很多:

    我可以以一种非常幸运的方式修复它,但肯定不是专业的方式,这可能是错误的方式,但它是有效的。这个网站上有很多类似的问题没有答案,所以似乎一般人对htaccess的了解并不多。

    我找到的解决方案是:

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

    因此,您可以拥有多种语言的网站,每种语言都位于子文件夹中,但即使您只运行一种单一语言的网站并使用子文件夹,那么您肯定需要此帮助,只需运行此 . htaccess ,它会工作(显然用你的文件名编辑)

    现在我们肯定需要阅读更多有关代码中 [L] 的内容,还有许多其他类似的代码:

    我不明白以下命令,如果需要它们,但您寻求帮助肯定可以找到它,或者也许这里的一些人可以与我们分享知识:

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

    没有其他人回答这个问题,这与大多数有关 .htaccess 和友好 URL 的问题相同,但这里至少有一些不专业的东西,但无论如何我分享一些小菜鸟知识,因为这是这个社区的主要思想,而不是每个人都是专业人士,但我们都可以分享知识。如果有更好的答案,我一定会将其标记为正确

    Antwort
    0
  • StornierenAntwort