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

我有一个英语和西班牙语网站,每种语言都有自己的文件夹,例如:

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 的问题相同,但这里至少有一些不专业的东西,但无论如何我分享一些小菜鸟知识,因为这是这个社区的主要思想,而不是每个人都是专业人士,但我们都可以分享知识。如果有更好的答案,我一定会将其标记为正确

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板