.htaccess 重写css/js路径

.htaccess 重写css/js路径,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,因此,我使用如下修改重写规则将路径重写为:URL/really/nice/paths/: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [PT,L] </IfModule> 重新启动发动机 重写cond%{REQUES

因此,我使用如下修改重写规则将路径重写为:
URL/really/nice/paths/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php?url=$1[PT,L]

问题是我如何重写js/css/image文件的路径,以便在请求js/css/image文件时,使用
URL/really/nice/path/
的相对路径,从
URL/scripts/
URL/styles/
URL/images/
文件夹提供服务?这可以在不使用重写库的情况下完成吗?

当URL被重写时,客户端并不知道。因此,当客户端查看URL为“example.com/some/URL/”的页面时,该页面引用了“images/image.jpg”中的图像,客户端在“example.com/some/URL/images/image.jpg”中查找图像,即使该页面实际上位于“example.com/some/other/URL/”中。这就是你面临的问题,对吗

此问题有三种主要解决方案:

  • 使用资源的绝对路径而不是相对路径
  • 使用标记确保客户端知道构建其相对URL的根与页面的外观URL不同
  • 在重写规则中为“some/url/images/”添加新规则
  • 选项1可能是最好的主意,您会发现大多数使用URL重写的站点都使用它,包括堆栈溢出本身。选项2不受欢迎,但有效且相对容易。选项3是最难维护的,因为URL重写异常和特殊情况可能会在定义新规则时出现


    最易维护的解决方案是使用绝对URL。

    请澄清您的问题。用户代理在根据HTTP请求文件时从不使用相对路径。他们会在请求之前解决这些问题。选项2很有吸引力。我不知道
    标签存在。为什么人们不赞成它?当您必须从另一个JS文件加载一组JS文件时,选项1不是很优雅。或者在CMS中使用图像。嗯,
    有它自己的复杂情况。例如,如果您使用的是内部URL(带有散列,如
    ),那么将发生的情况是,URL将指向您定义的基本URL,而不是页面中的地址。这也给URL的构建方式增加了另一个层次的复杂性,这会让调试它们有点痛苦。基本上,它有它自己的担忧,在深入研究之前,你应该理解它。如果你很用功,并且阅读了
    ,这可能是个好主意(因为你不能很好地控制CMS创建的URL)。