0

这是第一次在这里提出问题,所以不要难为我。谢谢你。

我目前设置了一个 joomla 网站。我在 template/index.php 中创建了一个页面、一个新模板和一个模块,我称之为我的模块。

有效的原始网址类似于:index.php/danh-sach-game?gt_name=game_mang_xa_hoi

danh-sach-game:是页面。game-mang-xa-hoi:是模块的输入参数。

一切正常,但我想将网址重写为:

danh-sach-game/game-mang-xa-hoi

所以我创建了一个 .htaccess 内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^danh-sach-game/(.*)$ index.php/danh-sach-game?gt_name=$1 [L]
</IfModule>

现在是“魔法”的时候了,如果我输入网址:danh-sach-game/game-mang-xa-hoi 然后 Joomla 推送消息“发生错误。找不到请求的页面。”

但是,如果我用这样的数字索引参数:danh-sach-game/1-game-mang-xa-hoi(注意:数字 1)。然后它可以找到。任何由数字组成的参数索引都可以找到。

我将 url 重写为一个测试文件(用 test.php 替换 index.php),而不是页面 test.php 接收参数作为 usuas,有或没有数字索引参数。

4

1 回答 1

0

这是因为 Joomla 和大多数 Joomla 扩展使用内容的 ID 列作为标识符来查找数据库。一些 SEF 工具(例如 AceSef、sh404Sef)提供了使用别名(数字和连字符后面的文本)进行查找的工具,但是会增加数据库查询的成本(它们将依次在内部查询正确的 url)。

URL 最后一部分中的数字将被处理并作为您正在查看的特定页面/内容的 ID 传递。这是在特定组件的 router.php 文件中完成的。因此,请检查您正在使用的组件的 router.php 文件,以检查 url 是如何被解析的。

于 2012-10-06T05:32:16.593 回答