PHP 和 htaccess 中的英語和西班牙語友善 URL
P粉969253139
P粉969253139 2023-09-08 10:17:27
0
1
551

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

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粉969253139
P粉969253139

全部回覆(1)
P粉281089485

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

我可以以非常幸運的方式修復它,但肯定不是專業的方式,這可能是錯誤的方式,但它是有效的。這個網站上有很多類似的問題沒有答案,所以似乎一般人對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 的問題相同,但這裡至少有一些不專業的東西,但無論如何我分享一些小菜鳥知識,因為這是這個社區的主要思想,而不是每個人都是專業人士,但我們都可以分享知識。如果有更好的答案,我一定會將其標記為正確

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板