喜悦国际村 » PHP高级编程 » 一个Rewrite规则产生的当前相对地址无法访问问题

页: [1]
7u52008-3-28 05:10 AM
一个Rewrite规则产生的当前相对地址无法访问问题

我把detial.php?id=xxx用Rewrite规则做了伪静态优化。代码如下:
[code]   
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/content/view/([0-9]+)/?(([^0-9]+)/?)? /detail\.php\?id=$1
RewriteRule ^/content/view/([a-z]+)/([a-z]+)/([^/]+) /$1/$2/$3
RewriteRule ^/content/view/(([a-z\.\?/]*)(id=[0-9]+)?) /$1
[/code]

也即实现 deital?id=222 转为 content/view/222/ 格式以便搜索引擎收录,
但是产生一个问题:

1。原来文章内容里出现相对路径的超链接,会有问题:
比如 <a href=''test/1.htm">test</a>,超链接地址会变成 http://www.xxxx.com/content/view/222/test/1.htm
图片地址也是一样。
导致大量链接失效,同时图片无法访问。

请问Rewrite规则我是否有参数漏了?还是哪儿有误的地方。

2。因为考虑到效率问题不能使用 .htaccess目录级来实现。

此问题困扰我很久了,看了很多资料但仍然无效,诚心求教。

尝试过重新写Rewrite规则

RewriteRule ^/content/view/([0-9]+)/(.*) /$1

但容易与原来的规则集起冲突,有时候会造成死循环

[[i] 本帖最后由 7u5 于 2008-3-28 01:12 PM 编辑 [/i]]

7u52008-3-28 05:34 AM
已解决= =!
把自己问题表达出来之后,再去查资料,果然很见效。。。

这里把方法贴出来:

在每个脚本的 <head></head>之间
用 <base href="">来指定当前页面所有相对路径的起始位置,比如 你的起始位置默认为网站根目录则直接用
<base href="http://www.xxxx.com">
/*----------------------------------------------------------------------------------------------------------------------------*/

除此之外,还是想请教一下,用httpd.conf,如果实现类似于.htaccess的RewriteBase的功能?


查看完整版本: 一个Rewrite规则产生的当前相对地址无法访问问题


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.00608 second(s), 2 queries