我有一个Joomla 3.3.6
(已编辑:)3.5.
网站,仅分为 3 个级别:
- 四大类(i、ii、iii、iii)
- 每个都分为一些中间类别(A,B,C,...)
- 最后是文章
- 两种语言 (en, pt)
URL
设置后的Search Engine Friendly URLs
, Use URL rewriting
,Adds Suffix to URL
和multilanguage support
,应采用以下形式:
http://www.example.com/en/bigcatiii/intercatA/articlex.html
但是,自从 Joomla-Baby-Version 以来,许多其他安装了 Joomla 并要求提供解决方案的人,我得到了:
http://www.example.com/en/bigcatiii/666-intercatA/articlex.html
其中 666 是来自地狱的数字,无目的地指示类别 ID
现在浏览答案,我找到了这个答案:
Edit “components/com_content/router.php“
(You’ll probably have to re-do this step every time you update Joomla.)
Replace the lines 38 and 290 with:
$advanced = $params->get('sef_advanced_link', 1);
and Replace line 426 with
->where($db->quoteName(‘alias’) . ‘ = ‘ . $db->quote($segment));
嗯,首先,第 426 行已经和原来的一样了。其次,这不能解决问题。它确实适用于:
http://www.example.com/en/bigcatiii/intercatA/articlex.html
但是,如果您浏览到以下内容,则会出现404错误:
http://www.example.com/en/bigcatiii/intercatA.html
另外,我注意到身份证号码不同。虽然整个 URL 是
http://www.example.com/en/bigcatiii/666-intercatA/articlex.html
相同的类别描述页面是
http://www.example.com/en/bigcatiii/333-intercatA.html
还有另一种听起来更好的解决方案,但也不起作用,基于.htaccess
RewriteEngine on
RewriteBase /
RewriteRule (\d+)-([^/]*) $2 [R=301,L]
显示URLs
正常,但找不到页面。如果我们可以使用.htaccess而不是更改 Joomla 核心来提供解决方案,那就更好了。
尽管如此,如果这个其他谷歌搜索的建议是有效的,改变 Joomla 核心就可以了。
Copy “components/com_content/router.php” to “/templates/your-template/html”
这意味着一旦您移至router.php
“本地”,您就不需要在升级后重做所有的东西。(当然,除非 router.php 已更新,以防您最好再次镜像它。)
感谢您花时间解决这个难题!
参考
4- 从 joomla 3.0 的 url 中删除文章 ID
已编辑(2016/May/02):Joomla 最新版本 3.5 的新赏金