强制网址.htaccess静态网站的规则

时间:2013-06-11 12:56:23

标签: .htaccess url-rewriting

我正在开发一个静态网站,只包含根文件夹下的.html文件(/ public_html)

我正在尝试强制执行网址重写规则。

所有网址必须如下:http://www.domain.com/file #rule 1

其他形式的写作必须被拒绝并视为错误,例如

http://www.domain.com/file.html #rule 2

http://www.domain.com/file/#rule 3

请您帮我解释一下这段代码

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^\.]+)$ $1.html [NC,L]

我成功遵守规则#1和#3 请帮助我完成规则#2,所以当我的网站访问者输入网址#2时,他将被拒绝,并且永远不会知道ithis是一个html文件

1 个答案:

答案 0 :(得分:0)

以下是您可以使用的代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html\s [NC]
RewriteRule ^ /%1 [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.+?)/?$ /$1.html [L]

验证一切正常后,将R=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。