从URL中删除.html并将请求重写为index.html

时间:2015-05-15 11:44:23

标签: regex apache .htaccess mod-rewrite

我对.htaccess相关内容不太熟悉,我希望得到一些帮助。基本上我要做的就是:

任何看起来像这样的请求(示例):

/foo.html

将改写为:

/foo

任何静态文件的请求,我都希望它服务:

/index.html

这有意义吗?知道怎么做吗?

实施例

到目前为止,这是我所拥有的,尽管据我所知,这是不正确的:

RewriteRule %{REQUEST_FILENAME} !-d
RewriteRule %{REQUEST_FILENAME} -f
RewriteCond ^(.*)$ $1.html [NC,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]

1 个答案:

答案 0 :(得分:1)

在将.html文件添加到URI之前检查是否存在{/ 1}}文件:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{REQUEST_FILENAME}.html -f [NC]
RewriteRule ^(.*)$ $1.html [L]

RewriteRule . /index.html [L]