.htaccess Url重写行为

.htaccess Url重写行为,.htaccess,url-rewriting,.htaccess,Url Rewriting,我目前有一个简单的网站,有几个.htm页面,我正试图使用.htacessmod rewrite删除.htm扩展名 我有一个包含4个.htm页面的文件夹,通过href指向其他3个页面的索引链接,当我访问该链接时,url将从www.domain.com/更改为www.domain.com/page.htm,它是否应该隐藏.htm 让url重写环境将每个页面都放在一个文件夹中吗?您应该这样做: 在索引文件中使用URI,如www.domain.com/page: 您的.htaccess RewriteE

我目前有一个简单的网站,有几个
.htm
页面,我正试图使用
.htacess
mod rewrite删除
.htm
扩展名

我有一个包含4个
.htm
页面的文件夹,通过href指向其他3个页面的索引链接,当我访问该链接时,url将从
www.domain.com/
更改为
www.domain.com/page.htm
,它是否应该隐藏.htm


让url重写环境将每个页面都放在一个文件夹中吗?

您应该这样做:

在索引文件中使用URI,如
www.domain.com/page

您的
.htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(\w+)/?$ [NC]
RewriteRule ^ %1.htm [L]

出于好奇,像您这样使用RewriteCond与只将其放在RewriteRule中相比有什么优势吗?@dambrisco您可以在URI的必需部分或完整URI上进行匹配,而无需重写它。而且,在rewriterule中,您可以:
在目录和htaccess上下文中,在删除引导服务器到当前rewriterule的前缀(例如“app1/index.html”或“index.html”,具体取决于指令的定义位置)后,该模式最初将与文件系统路径相匹配.
并且使用RewriteConds将有助于保持URl重写更干净(考虑到将来的重写规则),并且不会发生冲突。@dambrisco另外,
如果您希望匹配每个目录(htaccess)重写规则中的完整URl路径,请使用%{REQUEST_URI}重写后的变量。
对于上面的问题,虽然没有多大作用。这稍微澄清了一点。据我所知,RewriteCond会产生额外的处理成本,所以我总是在没有必要时避免它,特别是在匹配URI时。我一定会多读一点,让自己有一个更清晰的画面。谢谢