【问题标题】:.htaccess generating a 500 error status.htaccess 生成 500 错误状态
【发布时间】:2015-08-07 07:35:24
【问题描述】:

我正在尝试使用 .htaccess 文件生成重定向和缓存。 这是我的代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

<ifModule mod_headers.c>
  ExpiresActive On
  ExpiresDefault A86400

<FilesMatch "\.(ico|gif|jpg|jpeg\png|flv|pdf|swf|mov|mp3|wmv|ppt)$">
  ExpiresDefault A1814400
  Header append Cache-Control "public"
</FilesMatch>

<FilesMatch "\.(xml|txt|html)$">
 ExpiresDefault A259200
 Header append Cache-Control "proxy-revalidate"
</FilesMatch>

<FilesMatch "\.(js|css)$>
 ExpiresDefault A10800
 Header append Cache-Control "proxy-revalidate"
</FilesMatch>

<FilesMatch "\.(php|cgi|pl)$">
 ExpiresDefault A0
 Header set Cache-Control "no-store, no-cache, must revalidate, max-age=0"
 Header set Pragma "no-cache"
</FilesMatch>
</ifModule>

<ifModule mod_deflate.c>
<FilesMatch "\.(js|css|html|htm|php|xml)$">
 SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">
Header unset ETag
FileETag None
</FilesMatch>

如果我删除所有缓存,只保留前三行,它可以正常工作但没有缓存:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

我做错了什么?

【问题讨论】:

  • 查看您的 http 服务器错误日志文件。那是运行时错误被写入的地方。如果您可以简单地阅读它,那么尝试猜测错误可能是没有意义的。
  • 错误日志中没有关于该问题的错误
  • http 状态 500 肯定会在错误日志文件中创建一个条目。也许您正在查看错误的文件?请记住,有不同类型的日志文件,并且可能有多个错误日志文件,例如用于您的 http 服务器中的不同主机。
  • 好的,找到你说的错误日志——它说“Regex could not be compiled”
  • 啊哈!看?现在我们确切地知道问题是什么。无效的正则表达式。下次您将更快地查看错误日志。而且您会更快地找出问题所在。比猜测要好。

标签: .htaccess browser-cache


【解决方案1】:

“无法编译正则表达式”

<FilesMatch "\.(ico|gif|jpg|jpeg\png|flv|pdf|swf|mov|mp3|wmv|ppt)$">

您有一个 \p 令牌(用于匹配 Unicode 代码点,并且似乎在 Apache 配置中不受支持?) - 看起来像是一个错字 - 它应该是 |p (pipe-p)。

我只是在我自己的服务器 (Apache 2.4) 上尝试过这个并得到了同样的错误。

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多