Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[疑问] 启用url rewrite 后一些链接被破坏

[复制链接]
home2u 发表于 2010-2-20 09:56:39 | 显示全部楼层 |阅读模式
本帖最后由 home2u 于 2010-02-20 02:13 编辑

ss安装在根目录
同域下的  http://www.domain.tld/path/?q=xxx 都被直接替换了,导致这些链接都变成 http://www.domain.tld/q=xxx

可试验如下:在首页模板里加 <!-- href="/path/index.php?q=a" -->
打开网页源码生成的是: <!-- href="/q=a" -->
 楼主| home2u 发表于 2010-2-20 10:11:16 | 显示全部楼层
cache目录下的文件显示的url还是正常的,
能否提示这种链接在什么地方进行了替换?
回复

使用道具 举报

24小时数据 发表于 2010-2-20 10:17:57 | 显示全部楼层
可能是你的规则文件有问题
回复

使用道具 举报

 楼主| home2u 发表于 2010-2-20 10:28:39 | 显示全部楼层
ls,这个和规则文件没有关系
team 有人在吗?劳驾指点一下
回复

使用道具 举报

 楼主| home2u 发表于 2010-2-20 11:03:51 | 显示全部楼层
差不多解决了
文件 /function/common.func.php
函数 ob_out()
代码
  1. $preg_searchs[] = "/href\="\S*?\/(index\.php)?\?(\S+?)"/ie";
复制代码
这个正则很粗糙,如果安装在根目录,无所谓再粗糙一下,直接将其替换为
  1. $preg_searchs[] = "/href\="\/(index\.php)?\?(\S+?)"/ie";
复制代码
如果不想修改程序文件,可以在模板文件写链接的时候在等号左右随意加一个空格,或者不使用双引号等等,避免被无辜匹配
回复

使用道具 举报

xiongshouyue 发表于 2010-7-20 09:55:39 | 显示全部楼层
和我的情况有些相似。

文件 /function/common.func.php
函数 ob_out()
代码$preg_searchs[] = "/href\=\"\S*?\/(index\.php)?\?(\S+?)\"/ie";

$preg_replaces[] = "url_replace('\\2')";
复制代码现在系统会把页面里的所有不是主页(“<a href="http://www.abc.com/">xxxxx</a>”这样的)url地址都替换为config.php里设置的地址。
比如:我现在的系统是做新闻资讯的,分了城市,我想在A城市调B城市的新闻,且连接要连到B城市的地址,在A城市页面里的地址:<a href="http://b.abc.com/news/v-1.html">xxxxxx</a>
现在系统会把地址替换成<a href="http://a.abc.com/news/v-1.html">xxxxxx</a>

反复测试,排查,最后找到时上面两段代码加url_replace函数替换的问题。在<a href="$value[url]之前把$value[url]打印出来的值是http://b.abc.com/news...这样的对的。

如果不要$preg_searchs替换的话,伪静态地址就失效了。
回复

使用道具 举报

cdx61 发表于 2010-7-23 22:22:00 | 显示全部楼层
什么情况?~
回复

使用道具 举报

危险的蘑菇 发表于 2010-7-23 22:47:50 | 显示全部楼层
这样就可以实现只转义本站的url
http://www.365coding.com/html/88/n-588.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 02:55 , Processed in 0.028800 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表