【问题标题】:WAMP .htaccess gives Internal Server Error after moving from XAMPP从 XAMPP 移动后,WAMP .htaccess 会出现内部服务器错误
【发布时间】:2012-02-04 21:19:43
【问题描述】:

不久前,我从 xampp 转到 wamp
现在,当我进入我的网站时,出现了这个错误:

内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请联系服务器管理员 admin@localhost 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。 服务器错误日志中可能提供有关此错误的更多信息。

当我在 .htaccess 中使用此代码时:

<FilesMatch "\.(pdf|swf|js|css)$">
    Header set Cache-Control "max-age=604800"
</FilesMatch>

<FilesMatch "\.(html|cgi|php|htm)$">
    Header set Expires "Thu, 01 Dec 2003 16:00:00 GMT"
    Header set Cache-Control "no-store, no-cache, must-revalidate"
    Header set Pragma "no-cache"
</FilesMatch>


AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html

<Files *.js>
    SetOutputFilter DEFLATE
</Files>

<Files *.css>
    SetOutputFilter DEFLATE
</Files>  

我该如何解决这个问题?


我找到了 apache_error.log:

[2012 年 1 月 7 日星期六 13:58:06] [警报] [客户端 127.0.0.1] C:/wamp/www/website/.htaccess: 无效命令“标题”,可能拼写错误或由未包含的模块定义在服务器配置中,referer:localhost

【问题讨论】:

  • 它需要有 mod_headers.c 。试试这样:&lt;IfModule mod_headers.c&gt; Header set [your_options] &lt;/IfModule&gt;
  • 我应该在“your_options”中写什么?
  • 他提到了你之前发布的选项
  • 你能给我举个“选项”的例子吗?我真的不知道我应该如何编写这段代码。我应该在哪里写这段代码,在 .htaccess 文件上?

标签: php .htaccess wamp wampserver


【解决方案1】:

在 wamp 服务器中单击 apache ,apache 模块并单击(标记)rewrite_module 并重新启动 wamp 服务器,您的问题就解决了

【讨论】:

    【解决方案2】:

    正如 XP1 所说,这个问题的答案是在 WAMP 中启用 headers_module。

    要么使用 WAMP 界面,要么将其添加到您的 httpd.conf 中

    LoadModule headers_module modules/mod_headers.so
    

    【讨论】:

      【解决方案3】:

      我认为要执行 .htaccess 文件中的命令,应该启用 apache 的重写模块,但默认情况下它是禁用的。

      如果您使用的是 WAMP,那么只需单击任务栏中的 wamp 服务器图标 -> Apache -> Apache 模块。这将显示模块列表。然后向下滚动以找到 rewrite_module 并单击它。当你点击它时,WAMP 会在启用 rewrite_module 的情况下重新启动。

      所以我认为如果你激活这个模块,那么它可能会解决你的问题。

      【讨论】:

        【解决方案4】:

        在 WAMP 中大量搜索后,headers 模块没有启用 mod_headers 模块。您可以在 httpd.conf 文件中启用 mod_headers。在开始时会显示模块列表,只需找到 mod_header 并在其开头删除 # 并重新启动 WAMP。现在 mod_headers 模块将被启用并加载。

        【讨论】:

          【解决方案5】:

          去 Wampmanger LeftClick , Apache 然后 ApacheModules 并检查 (rewrite_module) , 重启 Apache 就OK了

          【讨论】:

            【解决方案6】:

            如果启用 mod_headers 没有解决您的问题,那么它是由 AddOutputFilterByType

            引起的

            这可以通过启用另一个模块mod_filter来解决。

            如果您的服务器设置被重置或您将项目迁移到其他服务器,添加“ifModule”代码可能也是一个好主意。这对我有用:

            <IfModule mod_filter.c>
            AddOutputFilterByType DEFLATE text/plain
            AddOutputFilterByType DEFLATE text/html
            AddOutputFilterByType DEFLATE text/xml
            AddOutputFilterByType DEFLATE text/css
            AddOutputFilterByType DEFLATE application/xml
            AddOutputFilterByType DEFLATE application/xhtml+xml
            AddOutputFilterByType DEFLATE application/rss+xml
            AddOutputFilterByType DEFLATE application/javascript
            AddOutputFilterByType DEFLATE application/x-javascript
            </IfModule>
            

            【讨论】:

            • 启用重写模块、标题模块和过滤器模块以使其工作
            【解决方案7】:

            添加这个,代码应该可以正常工作

                <IfModule mod_expires.c>
            <filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
            Header set Cache-Control "max-age=2628000, public"
            </filesMatch>
            </IfModule>
            

            【讨论】:

            • 我认为应该是mod_headers.c 而不是mod_expires.c,因为您使用的是“Cache-Control: max-age”缓存而不是“Expires”缓存。
            【解决方案8】:

            有时位置和网址之间的空间是解决方案 例如:

            header('Location:usertimeline.php');
            

            相对于

            没有错误
            header('Location:   usertimeline.php');
            

            我是 WAMP 的初学者,因为我的标头模块和所有东西都被打勾了,但只是这样做就结束了。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-09-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-02-15
              • 1970-01-01
              • 2015-10-08
              相关资源
              最近更新 更多