Mod rewrite 相当基本的mod重写问题

Mod rewrite 相当基本的mod重写问题,mod-rewrite,Mod Rewrite,我的网站通过index.php脚本过滤所有内容,在阅读mod_rewrite的文档时,看起来非常简单,但我有点卡住了。我想我会一次开始一页,看看是否能让它工作,但很快就卡住了 我有用户档案,其长格式基本上是: http://www.mysite.com/index.php?content=profile&id=2172 因此,我在根文件夹中的.htaccess文件中添加了一条重写规则: RewriteRule ^profile/([0-9]+)$ index.php?content=p

我的网站通过index.php脚本过滤所有内容,在阅读mod_rewrite的文档时,看起来非常简单,但我有点卡住了。我想我会一次开始一页,看看是否能让它工作,但很快就卡住了

我有用户档案,其长格式基本上是:

http://www.mysite.com/index.php?content=profile&id=2172
因此,我在根文件夹中的.htaccess文件中添加了一条重写规则:

RewriteRule ^profile/([0-9]+)$ index.php?content=profile&id=$1
现在的想法是能够进入
mysite.com/profile/2172

重定向确实带来了正确的页面,但是正在发生的是,每个CSS文件、图像等都在中间获取/配置/添加,当然这不是图像和CSS文件所在的位置。我在代码中使用相对路径名,因此代码中的图像示例可能是:

images/userimage.jpg

发生的情况是,上面显示的相对链接变成:

mysite.com/profile/images/username.jpg
对我来说,这毫无意义,因为映像路径与重写模式不匹配(
/profile/*
),那么为什么伪路径会将
/profile/
添加到我的所有内部链接

我尝试添加
RewriteCond%{SCRIPT\u FILENAME}-f
在重写规则之前访问htaccess,查看发生了什么,没有更改

抱歉,如果这是一个简单而基本的问题,但是任何具有真正mod rewrite专业知识的人都可以给我一些建议,这样我就可以让这个简单的案例工作,并在我的代码中正确引用我包含的css和图像文件来打开页面了吗?我没有对重写规则使用任何标志,因为在引擎打开后,我只有那一行(followsymlink行也在那里)

对我来说,这毫无意义,因为映像路径与重写模式(/profile/*)不匹配,那么为什么伪路径会将/profile/添加到我的所有内部链接中呢

您的图像与所服务的页面相关,该页面确实包含
/profile/
,例如
mysite.com/profile/2172
。你可能想考虑改变你的图像/ CSS链接从根到绝对值。 如果这是不可能的,您可以使用另一个重写来纠正问题(仅针对这种情况,一般不建议这样做),如下所示

RewriteEngine on
RewriteBase /

#rewrite to remove profile for jpg, css etc, must go above existing rule below
RewriteRule ^profile/(.+\.(jpg|css|js|png))$ $1 [L,NC]

#existing rule
RewriteRule ^profile/([0-9]+)$ index.php?content=profile&id=$1 [L,NC]

请记住,当您的HTML执行相对href时,是用户的浏览器通过添加主机和目录路径来解释这一点,这就是为什么它请求
/profile/images/username.jpg
而不是
/images/username.jpg
,因此Ulrich建议的是(a)修改代码以发出绝对引用(即,使用前导/)或(b)添加上述规则以去除无关的
/profile
。我使用所有相关配置文件的真正原因是我有我的站点、“live”站点和“dev”的多个副本Sulrich说:“所以使用绝对配置文件不允许我在开发网站上线前测试新代码,因为它将以绝对路径访问在线网站上的内容。我认为这对于任何真正的动态网站来说都是一个问题,在这些网站上,你可以制作新的模块和功能,并在上线前测试它们。”“您可能想考虑将您的图像/ CSS链接从根(即,图像/ima.jpg)中更改为绝对值。”这是否意味着,如果我只在SRC=“”路径(/Simult/IGI.jpg,而不是简单的图像/图像。JPG)的开头添加斜杠。这将把它从根目录转换成一个路径,而不使用前缀?@BenCahan是的,如果它是从根目录的绝对路径,即
/images…
,那么你的图像等不应该受到urlUlrich中
/profile
的影响,是的,这很好,只是在前面添加斜杠才是真正的解决方案,让它脱离了关系ve路径。谢谢大家,问题解决了,现在我只需浏览代码,在所有相关路径前面加一个斜杠。然后我可以一次修改一个页面来缩短我的URL,使其对搜索引擎友好,这一直是问题所在