【发布时间】:2011-08-18 03:59:52
【问题描述】:
我一直不擅长 apache,并且使用了非常简单的解决方案。现在我已经构建了一个 cms 软件.. 但是 .htaccess 开始大幅缩减。
我将首先解释我的友好网址的工作方式和外观。我的语言切换是基于 url 的,并且总是包含两个字符。它看起来像这样:stackoverflow.com/en/ 这使得切换非常容易,因为它基于 url.. 它在 SEO 术语中运行良好。此外,如果未设置语言 ID,则将使用默认语言 (stackoverflow.com/)。
数字中没有页面 ID。我在文本中有唯一的页面 ID:stackoverflow.com/services.html,最后用于 SEO 和文件夹目录反冲突目的 .html..
对于子页面,我有“$current_page”和“$parent_page”样式变量:stackoverflow.com/services/translating.html 服务是父页面,翻译是当前页面。
还有一些示例代码(我对它进行了很多削弱,所以你不会认为它不完整):
RewriteRule ^(et|en|fi)\/(.+)\/(.+)\.html index.php?language=$1&pagelink=$3&parentlink=$2 [L,NC,QSA]
RewriteRule ^(.+)\/(.+)\.html index.php?language=0&pagelink=$2&parentlink=$1 [L,NC,QSA]
RewriteRule ^(.+)\.html index.php?language=0&pagelink=$1&parentlink=0 [L,NC,QSA]
如何使语言切换部分更加动态?
这个方法..^(et|en|fi)\/..意味着,当我设置cms时,我必须手动设置语言列表。最好的办法是从 cms 设置中以某种方式设置它。因为,这种方式不存在与文件夹相关的冲突。是否可以通过 php 全局 apace 变量,然后将其显示为 .htaccess 文件?像这样的东西:..^(LANGUAGELISTS)\/..?如果这是不可能的,那么下一个最好的办法是匹配该位置的 2 个字符并将其作为 $_GET['language'] 传递。
如何动态拥有无限的父母?
意思是,“$parent_page”不是静态设置的,我有无限的孩子,类似于:stackoverflow.com/services/translating/english/somesubpage.html。如果可以的话,那么如何在 php 中使用数组呢?
赏金编辑
问题的第一部分基本解决了,除非有人想出一些 php -> apache-array -> .htaccess 方式。
但是,问题的第二部分仍然没有解决。由于这是我所有项目的问题,并且将来可能会帮助其他人,因此我决定为这个问题添加赏金。
【问题讨论】:
标签: php apache .htaccess friendly-url seo