.htaccess PHP和htaccess中的友好URL(英语和西班牙语)

azpvetkf  于 2023-06-24  发布在  PHP
关注(0)|答案(1)|浏览(113)

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

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

然后它工作正常,但将这些文件添加到子文件夹我没有得到任何结果。
重要的是,slug保存在MySQL中如下所示:

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

这是因为它们看起来比破折号更好,而且日期是出版日期,所以每篇文章都会改变。
下面是我为这些子文件夹创建的.htaccess代码:

更新:问题仅在htaccess中出现,即使我回答了自己的问题,也没有完全解决

RewriteEngine On

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

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

你知道问题出在哪里吗?

ilmyapht

ilmyapht1#

对于这些寻求帮助,因为他们有同样的问题,我相信有很多:
我可以修复它在一个非常幸运,但肯定不是专业的方式,这可能是错误的方式,但它是工作。在这个网站上有很多类似的问题没有答案,所以看起来一般来说没有那么多关于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和friendly-urls的问题相同,但这里至少有一些东西,不专业,但我分享一些小的菜鸟知识,因为这是这个社区的主要思想,不是每个人都是专业人士,但我们都可以分享知识。如果有一个更好的答案,我一定会标记为正确的

相关问题