【问题标题】:Add a folder before every single file request using mod_rewrite?在使用 mod_rewrite 的每个文件请求之前添加一个文件夹?
【发布时间】:2010-11-07 23:38:01
【问题描述】:

我正在本地服务器和远程服务器上开发一个站点。在开发中,服务器位于 url.com/~user 中,而在我的本地主机上,我只是在 root 中开发。即,如果我在本地服务器上包含一个文件,我只需引用“/img/img.png”,例如...虽然这显然会在远程服务器上返回 404,因为它会寻找“/~user /img/img.png”。

这与@Problems with pointing to files on local server versus remote 回答的问题相同,但是我想知道的是,这是否可以通过 mod_rewrite 解决?定义 SITE_ROOT 可以在 php 文件中工作...但它不能修复 CSS 表中引用的文件。

是否可以简单地告诉我的远程服务器将 /~user/ 添加到每个包含的文件中?即 /img/img.png 变成 /~user/img/img.png ?

感谢您的任何指点。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    我将猜测您在生产中的某种共享服务器上。您的情况的问题是,http://example.com/img/some.jpg 之类的东西会生成一个请求,该请求(没有特殊设置)不会在http://example.com/~user/ 的 web 目录中点击 .htaccess。因此,除非您有权访问服务器范围的 apache 配置,否则这对您不起作用。

    如果你想走这条路,你可以做的是将 URL 写为 /~user/img/some.jpg。然后,您可以在您的开发服务器上进行重写,以摆脱 ~user。

    更好的是,为什么要包含前导斜线?这样,你得到的只是 img/some.jpg,这将是一个相对路径。如果你引用http://localhost/index.html 中的图像,它将拉取http://localhost/img/some.jpg。如果你引用http://example.com/~user/index.html 中的图像,它将拉取http://example.com/~user/img/some.jpg

    最后,在你的开发服务器上有一个 ~user 目录,这样在两个地方都一样吗?

    【讨论】:

    • 我在一个虚拟服务器上,我拥有服务器范围的配置访问权限。
    • 我将尝试让本地服务器与远程服务器相同。
    • 顺便说一句,相对图像可以工作,但我正在做干净的 url 即而不是 events.php?id=32 它的 /events/32 ,因此服务器将其翻译为实际目录.通过相对链接,它会尝试获取 /events/img/img.png 之类的东西,这显然不存在! :|
    • 在这种情况下,mod_rewrite 也可以帮助您:RewriteRule ^(.+)/img/(.+)$ /img/$1 [L] 可以解决问题,前提是 RewriteBase 是适当设置,RewriteRule 发生在主 web 目录中的 .htaccess 或主配置中的相应目录中。
    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 2022-11-11
    • 2022-06-15
    • 2021-12-08
    • 1970-01-01
    • 2020-11-10
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多