.htaccess mod_rewrite> 500内部服务器错误

时间:2011-03-05 17:26:46

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

我正在使用.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内部服务器错误

7 个答案:

答案 0 :(得分:6)

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

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

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

  

[Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51]   /var/www/html/.htaccess:这里不允许使用DirectoryIndex

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

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

  

[Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51]   /var/www/html/.htaccess:RewriteCond:bad flag delimiters

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

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

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

您必须将.htaccess放在根目录中,并使用以下代码:

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

答案 3 :(得分:1)

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

#LoadModule rewrite_module modules/mod_rewrite.so

如果哈希符号(#)显示为第一个字母,请将其删除,保存并重新启动服务器。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

卸下:

Options +FollowSymLinks

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

答案 6 :(得分:0)

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

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