首頁  >  問答  >  主體

PHP 和 htaccess 中的英語和西班牙語友善 URL

我有一個英文和西班牙文網站,每種語言都有自己的資料夾,例如:

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

最新新聞清單顯示在以下位置:

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

當使用者點擊某篇文章閱讀整篇文章時,他們會被連結到從這裡閱讀整篇文章(使用 MySQL 中儲存的 slug),如下所示(例如):

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

所有文章都使用以下頁面來取得 slugs:

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

在這些頁面上,腳本查詢 MySQL 以搜尋 slug 並顯示完整的文章。問題是由於某種我不明白的原因我沒有得到任何結果。

如果我將檔案移到根目錄:

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

然後它工作正常,但是將這些文件添加到子資料夾中我沒有得到任何結果。

重要的是,slugs 像這樣保存在 MySQL 中:

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

因為它們看起來比破折號更好,而且日期是發布日期,所以每篇文章都會改變。

這是我為這些子資料夾建立的 .htaccess 程式碼:

更新:問題只出現在 htaccess 中,即使我回答了自己的問題,仍然沒有完全解決

RewriteEngine On

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

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

知道問題出在哪裡嗎?

P粉969253139P粉969253139380 天前469

全部回覆(1)我來回復

  • P粉281089485

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

    對於那些尋求幫助的人,因為他們有同樣的問題,而且我確信有很多:

    我可以以非常幸運的方式修復它,但肯定不是專業的方式,這可能是錯誤的方式,但它是有效的。這個網站上有很多類似的問題沒有答案,所以似乎一般人對htaccess的了解並不多。

    我找到的解決方案是:

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

    因此,您可以擁有多種語言的網站,每種語言都位於子資料夾中,但即使您只運行單一語言的網站並使用子資料夾,那麼您肯定需要此幫助,只需運行此. htaccess ,它會工作(顯然用你的文件名編輯)

    現在我們肯定需要閱讀更多有關程式碼中 [L] 的內容,還有許多其他類似的程式碼:

    我不明白以下命令,如果需要它們,但您尋求幫助肯定可以找到它,或者也許這裡的一些人可以與我們分享知識:

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

    沒有其他人回答這個問題,這與大多數有關.htaccess 和友好URL 的問題相同,但這裡至少有一些不專業的東西,但無論如何我分享一些小菜鳥知識,因為這是這個社區的主要思想,而不是每個人都是專業人士,但我們都可以分享知識。如果有更好的答案,我一定會將其標記為正確

    回覆
    0
  • 取消回覆