如何使用.htaccesss将绝对URI路径从“/xxx/some.file”映射到“/something/xxx/some.file”

时间:2011-10-19 23:44:17

标签: .htaccess mod-rewrite coldfusion rewrite

感谢您的帮助;我是所有这些URL映射的新手,但我相信这是一个简单的问题......

我正在将GoDaddy(最近放弃了他们的ColdFusion支持)的ColdFusion应用程序迁移到CFDynamics

我有一个新root的URL:cfd123.cfdynamics.com/lbc这是我放入网站的wwwroot目录。 (它实际上是:D:\ Inetpub \ wwwroot \ lbc.com \ wwwroot但我不认为这很重要)

问题是网站中的所有HTML URI:href和src属性等都是使用绝对路径编写的:“/ images / ones.jpg”等等,现在我希望它们映射到“cfd123”。 cfdynamics.com/lbc/images/some.jpg”。

我想我需要在所引用的任何地方将“/ something”映射到“/ lbc / something”。这似乎应该很简单,只需将前导“/”映射到“/ lbc /”,我就可以了。

所以,我去创建一个“Alias / / lbc /”类别的列表并将它放在我的.htaccess文件中。现在我发现.htaccess中不允许Alias。 (我想如果我可以访问httpd.conf,我可以在那里使用Alias,但它是一个共享的托管环境,我没有访问权限。)

所以,我以为我会尝试重写规则(仍然在.htaccess文件中):

RewriteEngine on
RewriteBase /lbc
RewriteRule ^/(.*)$ /$1 [L,R=301]

无济于事。所以,我没有发现任何明显的事情都有效(我甚至不确定我是否正确地完成了它们)。我没有看到任何调试机制向我显示任何内容(chrome只显示了在找不到文件时会出现的404错误。)

这对我来说是全新的,开始变得非常快。任何人都可以指出我正确的方向吗?

谢谢,史蒂夫

P.S。我可以通过在wwwroot目录中创建一个包含下面代码的Application.cfc文件来处理ColdFusion CFInclude指令,但这对整个页面中的各种HTML链接没有任何作用。

<cfset this.name = "AbsoluteReference"/>
<cfset this.mappings = structNew() />
<cfset this.mappings["/"] = getDirectoryFromPath(getCurrentTemplatePath())/> 

1 个答案:

答案 0 :(得分:0)

您在CFDynamics上运行Windows服务器我可以从中了解

我有一个新root的URL:cfd123.cfdynamics.com/lbc这是我放入网站的wwwroot目录。 (实际上是: D:\ Inetpub \ wwwroot \ lbc.com \ wwwroot 但我觉得不重要)

这是一个Windows结构“D:\ Inetpub \ wwwroot \ lbc.com \ wwwroot”,因此.htaccess不适用于URL重写,因为在共享环境中,您将无法执行所需的操作。这些更改必须在IIS中进行,这不是一个选项。如果您有Dreamweaver,您可以对/ images /进行批量查找替换,并用/ ibc / images /替换,对于链接,请执行href =“/替换为href =”/ ibc /.

希望这有帮助。