通过htaccess添加文件扩展名

问题描述:

是否可以向不包含文件扩展名的url添加.html。因此,例如通过htaccess添加文件扩展名

mydomain.com/somepage 将直接向 mydomain.com/somepage.html

我用下面却得到一个内部服务器错误尝试。

RewriteEngine On 
RewriteBase/
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ $1.html [NC,L] 

感谢

+0

日志说...? – 2012-04-02 08:58:48

+0

[Mon Apr 02 10:16:52 2012] [error] [client 127.0.0.1] mod_rewrite:达到的最大内部重定向数目。假设配置错误。如果需要,使用'RewriteOptions MaxRedirects'来增加限制。 – Ben 2012-04-02 09:17:46

+0

FURL正在网站上运行,所以不知道这是否会导致差异?我已经确认这是在任何FURL代码 – Ben 2012-04-02 09:18:49

RewriteEngine On 
RewriteBase/

# add .html file extension 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.+)$ $1.html [L] 

如果与扩展名为.html这样的文件确实存在,它只会重写(安全改写 - 将解决你的问题“达成内部重定向的最大数量”)。换句话说:如果​​被请求并且/about.html存在,那么它将被重写。另一方面,如果请求/yeahbaby,但没有/yeahbaby.html文件存在,则不会发生任何事情(404处理程序应该启动..或任何其他可能存在的规则)。

+0

之前嘿谢谢你的答复。我没有得到错误,但它并没有实际重写 – Ben 2012-04-02 09:55:20

+0

在这里完美的工作(在Windows上的Apache 2.2.xx)..并在其他类似(如果不相同)问题上工作得很好(搜索“如何添加.php扩展“或类似的东西)。如果它不起作用,则需要更多细节 - 您对Apache有多少控制权?你可以启用重写调试http://httpd.apache.org/docs/current/mod/mod_rewrite.html#logging? – LazyOne 2012-04-02 10:05:25