仅在一个目录中将html扩展名添加到文件中

时间:2012-05-15 16:04:17

标签: .htaccess mod-rewrite

尝试重写如下所示的链接:

/content/about-me

......对此:

/content/about-me.html

这对我正在做的事情是必要的。我使用此htaccess规则不断收到内部服务器错误:

RewriteRule ^content/(.*) /content/$1.html [NC,L]

知道我做错了什么吗?网上有大量的例子,但不能很好地解决问题。

1 个答案:

答案 0 :(得分:1)

您的重写规则(模式)过于宽泛,会捕获已经重写的网址。覆盖已经重写的URL将导致无限重写循环,Apache会智能地检测并中止此类请求,并出现500错误。

RewriteRule Last [L] flag not working?

例如:

  • 原始请求:/hello/pink-kitten
  • 第1次(初始)重写:/hello/pink-kitten.html
  • 第二周期:重写为/hello/pink-kitten.html.html
  • 第3个周期:重写为/hello/pink-kitten.html.html.html
  • ......等等

更正确的方法(少数可能的方法之一) - 将在重写之前检查此类html文件是否存在:

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