如何仅为文件系统上已存在的文件夹的根目录创建 Tuckey 直通重写规则?

How Can I Create a Tuckey Passthrough Rewrite Rule for Just the Root of a Folder that Already Exists on the Filesystem?

我想创建一个 Tuckey 重写规则,仅当 URL 指向特定子文件夹的根时才匹配,如下所示:http://localhost/foo (或 http:///localhost/foo/)

在这种情况下,/foo 文件夹已经存在,我需要确保 /foo 文件夹下的静态资源仍然可以正常访问。例如“http:///localhost/foo/img/flower.jpg”.

这是我到目前为止的想法,但没有用:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
    <!-- Turn foo/ into /index.cfm/foo/ -->
    <rule>
        <from>^/foo$</from>
        <to type="passthrough">/index.cfm/foo</to>
    </rule>
</urlrewrite>

我怀疑我可能需要对 <from> 部分中的正则表达式进行一些调整。如果您能提供任何帮助,我们将不胜感激!

这应该可以解决问题:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
    <!-- Turn foo/ into /index.cfm/foo/ -->
    <rule>
        <from>^/foo/$</from>
        <to type="passthrough">/index.cfm/foo</to>
    </rule>
</urlrewrite>

您必须在 $ 前添加一个斜线。这应该为以下路径执行规则:

  • /foo
  • /foo/

它将忽略以下路径:

  • /foo/img/
  • /foo/img/flower.jpg