.htaccess - 如何删除文件 extesion,添加尾部斜杠,并可能保留样式?

  显示原文与译文双语对照的内容

我试图用htaccess屏蔽html和shtml文件的文件扩展名。 我不知道多少了,我要做的就是删除扩展,将尾部的斜杠添加到voiceover页面,并停止。 我也想将尾斜线添加到html文件中,但是我的研究对于这个主题带来了不同的研究。 看起来我要生成一个带有两个斜杠的url,或者一个带有假目录。斜杠和文件扩展名的url 。

我基本上尝试了所有我知道的。 这是我所拥有的:


#this redirects idex.html to http://mysite.com

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}/index.html HTTP/
RewriteRule ^index.html$ http://%{HTTP_HOST}/[R=301,L]

#remove file extension

RewriteCond %{REQUEST_FILENAME}!-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html 

# if I try this (.*)/$ $1.html the page loses its style 

RewriteCond %{REQUEST_FILENAME}!-d
RewriteCond %{REQUEST_FILENAME}.shtml -f
RewriteRule ^(.*)/$ $1.shtml 

#the code 上面 for shtml files works properly
#force trailing slash and remove file ext. This produces error


#RewriteCond/%{REQUEST_FILENAME}.html -f
#RewriteRule ^([a-zA-Z0-9_-s]+)/$/$1

##the code below is perfect (retrieved on StackExchange)

#RewriteCond %{REQUEST_URI} (.*)/$
#RewriteCond %{REQUEST_FILENAME}.html -f
#RewriteRule (.*)/$ $1.html [L]


#especially if combined with this, but pages lose their style
#RewriteCond %{REQUEST_FILENAME}!-f
#RewriteCond %{REQUEST_FILENAME}.html -f 
#RewriteRule. * %{REQUEST_FILENAME}/[R=301,L]

是否有方法添加尾部斜杠并保持页面样式? 我相信有一个但我不能找到它。"。"。谢谢

时间: 原作者:

要保留样式,请更改指向绝对( uri的开头是一个 / )的链接,或者将它的添加到页标题中:


<base href="/"/>

为什么不能得到样式的原因是浏览器将一个URI基附加到相对 url 。 因此,浏览器加载此页:


http://yourdomain.com/foo/

重写规则将内部重写URI到 /foo.html,但是浏览器仍然认为它正在加载 /foo/ 。 附加斜杠意味着相对URI基不再是 /,而是 /foo/ 。 因此,对于所有相对链接,浏览器将把 /foo/ 附加到开头。 如果你指定相对URI基是 /,那么浏览器将仅仅附加 / ( 就像它对非尾随斜杠页那样) 。

原作者:
...