Url rewriting 如何使用Cheyenne从静态html文件的URL中抑制.html?

Url rewriting 如何使用Cheyenne从静态html文件的URL中抑制.html?,url-rewriting,rebol,cheyenne,Url Rewriting,Rebol,Cheyenne,我正在使用并且希望将静态HTML文件作为文本/HTML,但我不希望URL包含.HTML扩展名。有没有一种不使用CGI或其他动态处理器就能做到这一点的方法 例如: /path/to/example.org/web-root/about.html 通过以下方式联系: http://example.org/about Apache等效的“重写”类似于: RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule !.*\.html$ %{REQUEST_

我正在使用并且希望将静态HTML文件作为
文本/HTML
,但我不希望URL包含
.HTML
扩展名。有没有一种不使用CGI或其他动态处理器就能做到这一点的方法

例如:

/path/to/example.org/web-root/about.html
通过以下方式联系:

http://example.org/about
Apache等效的“重写”类似于:

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

你可以建立一个非常简单的mod来实现这一点

将以下内容另存为cheyenne/mods/mod-auto-ext.r

REBOL []

install-HTTPd-extension [
    name: 'mod-auto-ext

    order: [url-translate   first]

    auto-ext: '.html ; use whatever automatic extension you want!

    url-translate: func [req /local cfg domain ext][
        unless req/in/ext [
            req/in/ext: auto-ext
            append req/in/target req/in/ext
        ]

        ; allow other mods to play with url (changing target path for example)
        return none
    ]
]
然后在httpd.cfg中添加模块,如下所示:

modules [
    auto-ext   ;<----- put it as first item in list, whatever mods you are using.

    userdir
    internal
    extapp    
    static
    upload
    expire  
    action
    ;fastcgi
    rsp
    ssi
    alias
    socket
]
模块[

auto-ext;不完全是您想要的,但您可以通过使用状态码[404 rewrite.rsp]配置参数来实现。如果文件存在,则在rewrite.rsp内部将请求转发到*.html,如果文件不存在,则显示404页面。@endo64是的,这有点像黑客。夏安应该这样做(不是说Apache更好)有一种将规范url映射到静态资源的方法,理想情况下绑定到“Accept”头…以澄清(我应该在我的问题中提出这一点),如果没有与给定URL关联的HTML文件,它仍然会传递给常规的404处理程序吗?值得探索的是,如何将此工作与Accept标头结合起来…是的,它将生成一个404处理程序。我们所做的只是更改URL引用的目标(服务器端资源)。