我有一個英文和西班牙文網站,每種語言都有自己的資料夾,例如:
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粉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 的問題相同,但這裡至少有一些不專業的東西,但無論如何我分享一些小菜鳥知識,因為這是這個社區的主要思想,而不是每個人都是專業人士,但我們都可以分享知識。如果有更好的答案,我一定會將其標記為正確