从URL(Joomla 3.3 / 3.4 / 3.5)中删除ID(类别和文章)
我有一个(编辑:)网站,只有3个级别组织:Joomla 3.3.6
3.5.
- 四大类(i,ii,iii,iiii)
- 每个都分为一些中间类别(A,B,C,...)
- 最后是文章
- 两种语言(英文、意大利文)
后置设置 、 和 应采用以下形式: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
另外,我注意到ID号是不同的。虽然整个网址是
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]
显示正常,但找不到页面。如果我们能提供一个使用.htaccess而不是改变Joomla核心的解决方案,那就更好了。URLs
尽管如此,如果这个谷歌建议是有效的,那么改变Joomla核心就好了。
Copy “components/com_content/router.php” to “/templates/your-template/html”
这意味着一旦你移动到你的“本地”,你就不需要在升级后重做所有的东西。(当然,除非路由器.php已更新,以防您最好再次镜像它。router.php
感谢您抽出宝贵时间解决这个难题!
引用
已编辑 (2016/May/02): Joomla 最新版 3.5 的新赏金