Url rewriting 如何使用Cheyenne从静态html文件的URL中抑制.html?
我正在使用并且希望将静态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
,但我不希望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引用的目标(服务器端资源)。