Datalife引擎重写无ID的URL

时间:2013-05-05 23:56:14

标签: apache datalife-engine

我想更改重写网址以删除ID号,所以

site/2-post.html - >通常
site/post.html - >我想要的

有可能吗?我已经检查了模块php文件和必要的更改代码,但在.htaccess中无法设置。我的.htaccess就在这里,我想当我改变它时会发生一些必要的部分

RewriteRule ^([0-9]+)-([^/]*)\.html$ /index.php?newsid=$1&seourl=$2 [L]

3 个答案:

答案 0 :(得分:0)

我不认为你想要实现的是什么,因为应用程序需要知道ID才能做任何有用的事情。如果浏览器请求的唯一内容是site/post.html,则服务器无法神奇地重新发送以前在URL中的ID。

唯一可行的方法是,如果应用程序可以完全基于“seourl”参数查找文章,在这种情况下,您只需从URL中删除“newsid”部分,留下如下规则:< / p>

RewriteRule ^([^/]*)\.html$ /index.php?seourl=$1 [L]

测试这是否有效的简单方法是在浏览器中键入规则将映射到的表单的URL,例如http://yoursite.example.com/index.php?seourl=some-post-that-exists

答案 1 :(得分:0)

这个hack将id替换为url的结尾: 找到这个:     发动机/模块/ show.short.php     engine / modules / show.full.php

找到。 $ row ['id']。 “ - ”。 $ row ['alt_name']。名 “.html”;

替换为:。 $ row ['alt_name']。 “ - ”。 $ row ['id']。名 “.html”;

将此代码放入.htaccess

RewriteRule ^(.*)-([0-9]+).html(/?)+$ index.php?newsid=$1&seourl=$2 [L]
RewriteRule ^([^.]+)/(.*)-([0-9]+).html(/?)+
$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]

答案 2 :(得分:0)

回到DLe 8.x这个选项可以修改,但在9.x和10.x中运气不好,我完全同意IMSoP,因为DLE使用ID base来生成seourl。