.htaccess生成500错误状态

时间:2015-08-07 07:35:25

标签: .htaccess browser-cache

我尝试使用.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]

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

&#34;无法编译正则表达式&#34;

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

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

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