【问题标题】:.htaccess mod_rewrite > 500 Internal Server Error.htaccess mod_rewrite > 500 内部服务器错误
【发布时间】:2011-07-09 11:50:33
【问题描述】:

我正在使用 .htaccess。

我原来的链接是:

http://example.com/CareerDays/index.php?u_type=admin

我正试图让它看起来像这样:

http://example.com/v/admin

整个代码如下所示:

RewriteEngine On
RewriteRule ^v/([^/]*)$ /CareerDays/index.php?u_type=$1 [L]

我总是得到

500 内部服务器错误

【问题讨论】:

  • 日志中没有关于内部服务器错误的内容:/

标签: php .htaccess mod-rewrite friendly-url


【解决方案1】:

在我的主机上,我需要添加第一行:RewriteBase /,直到那时我也收到内部服务器错误。

【讨论】:

  • 没有帮助:/。感谢您的尝试。
【解决方案2】:

当您将配置指令放在 .htaccess 文件中时,如果您没有获得预期的效果,则可能会出现许多问题。

最常见的问题是,AllowOverride httpd.conf 文件中的指令 未设置,因此您的配置指令得到遵守。确保您没有对相关文件范围有效的 AllowOverride None。对此的一个很好的测试是将垃圾放入您的 .htaccess 文件并重新加载页面。如果未生成服务器错误,则几乎可以肯定 AllowOverride None 有效。

另一方面,如果您在尝试访问文档时遇到服务器错误,请检查您的 httpd 错误日志。它可能会告诉您.htaccess 文件中使用的指令是不允许的。

[2010 年 9 月 17 日星期五 18:43:16] [警报] [客户端 192.168.200.51] /var/www/html/.htaccess: 此处不允许使用 DirectoryIndex

这将表明您使用了 .htaccess 文件中从未允许的指令,或者您根本没有将 AllowOverride 设置为足以满足您使用的指令的级别。请查阅该特定指令的文档以确定是哪种情况。

另外,它可能会告诉您在使用指令本身时出现语法错误。

[2008 年 8 月 9 日星期六 16:22:34] [警报] [客户端 192.168.200.51] /var/www/html/.htaccess: RewriteCond: 错误的标志分隔符

在这种情况下,错误消息应该特定于您已提交的特定语法错误。

您必须在 httpd.conf 文件中将 AllowOverride 设置为“All”或“FileInfo”,才能在 .htaccess 文件中拥有 mod_rewrite 指令的权限。

http://httpd.apache.org/docs/2.2/howto/htaccess.html

【讨论】:

    【解决方案3】:

    这个 RewriteRule 永远不会匹配...

    您必须将 .htaccess 放在根目录中,代码如下:

    RewriteEngine On
    RewriteRule ^v/([^/]*)$ CareerDays/index.php?u_type=$1 [L]
    

    【讨论】:

    • 试过...仍然是 500 内部服务器错误 :(
    • 删除此代码时是否仍然存在服务器错误? mod_rewrite 真的启用了吗?
    • 是的,mod_rewrite 已启用,不,没有此代码不会显示错误:/
    【解决方案4】:

    检查您的 ../apache/conf/httpd.conf 并查找:

    #LoadModule rewrite_module modules/mod_rewrite.so
    

    如果井号 (#) 出现在第一个字母中,请将其删除、保存并重新启动服务器。

    【讨论】:

      【解决方案5】:

      .htaccess 不属于 CareerDays。如果您向根目录之外的目录写入请求,服务器首先检查该目录是否存在,如果不存在,它将优先处理 ROOT .htaccess。它不会think 检查不相关目录中的 .htaccess。

      【讨论】:

      • 感谢您的解释。我已将 .htaccess 文件移至根目录,但它仍然显示相同的错误。
      【解决方案6】:

      删除:

      Options +FollowSymLinks
      

      然后从您的 FTP 客户端以 ASCII 模式上传到根文件夹。

      【讨论】:

        【解决方案7】:

        500 错误通常是文件权限错误的结果,而不是其他原因。检查您的 .htaccess 文件的权限。

        所需的权限因环境而异(我认为这是在 Linux 上 - 在 Widows 上应该不是问题)。

        【讨论】:

        • 我已将权限更改为 777,但没有任何变化。我在 Windows 上也有同样的问题。
        猜你喜欢
        • 2018-05-10
        • 1970-01-01
        • 2014-08-21
        • 2016-09-22
        • 2017-04-05
        • 1970-01-01
        • 2013-02-06
        • 2015-06-28
        • 2016-04-20
        相关资源
        最近更新 更多