所以我非常努力地试图理解这两段代码之间的差异,但我找不到它。我正在尝试从网址中删除“.html”扩展名,但我总是看到来自不同网站的两个不同的代码。
第一个代码是:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ http://example.com/$1 [R=301,L]
第二个代码是:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html
根据我的理解,第一个代码似乎替换了.html路径中的任何字符(例如example.com/home.html),以替换它而不使用.html扩展名(例如.html.com/home) )。然而,在许多不同的网站中,两者似乎都在不断涌现。这就是为什么我想问一下是否有人知道两者之间的差异以及这两部分代码实际上意味着什么?
任何帮助都将不胜感激。
答案 0 :(得分:2)
第一个匹配任何以.html
结尾的路径的请求,并告诉浏览器它应该在example.com
上{@ 1> {{1} }。
第二个匹配任何路径的任何请求,并告诉服务器将.html
添加到它的末尾并将其传递给浏览器。