2

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

/content/about-me

...对此:

/content/about-me.html

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

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

知道我做错了什么吗?网络上的例子很多,但不能完全正确。

4

1 回答 1

1

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

RewriteRule Last [L] 标志不起作用?

例如:

  • 原始请求:/hello/pink-kitten
  • 第一次(初始)重写:/hello/pink-kitten.html
  • 第二个循环:重写为/hello/pink-kitten.html.html
  • 第三个周期:重写为/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]
于 2012-05-15T16:13:53.867 回答