2011-03-05 35 views
0

我是新的.htaccess,所以这可能是一个虚拟的问题:)。.htaccess mod_rewrite> 500内部服务器错误

我原来的链接是:

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内部服务器错误”:(:

有什么建议吗?

+1

你检查错误日志? – Gumbo 2011-03-05 18:17:43

+0

日志中没有关于内部服务器错误的内容:/ – Pinky 2011-03-05 18:42:15

回答

0

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

+0

感谢您的解释。我已经将根目录中的.htaccess文件移动了,但它仍然显示出相同的错误。 – Pinky 2011-03-05 17:45:58

0

删除:

Options +FollowSymLinks 

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

+0

没有什么改变。仍然是相同的错误:/ – Pinky 2011-03-05 17:43:21

1

该重写规则将不会匹配......

你必须放在根目录下的.htaccess,使用此代码:

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

试过...仍500内部服务器错误:( – Pinky 2011-03-05 17:44:50

+1

是否仍然有一个服务器错误,当你删除这段代码?mod_rewrite实际上启用? – Floern 2011-03-05 18:13:34

+0

是的,mod_rewrite启用,并且不,错误doesn没有这个代码显示:/ – Pinky 2011-03-05 18:30:28

0

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

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

+0

我已将权限更改为777,并且没有任何更改。我在Windows上也遇到了同样的问题。 – Pinky 2011-03-05 18:28:38

4

在我的托管我需要添加第一行:RewriteBase /,直到然后我得到内部服务器错误。

+0

没有帮助:/。谢谢您的尝试。 – Pinky 2011-03-05 18:45:25

+0

已修复此问题。谢谢 :) – kritzikratzi 2013-04-26 19:00:26

0

检查../apache/conf/httpd.conf和寻找:

#LoadModule rewrite_module modules/mod_rewrite.so 

如果hash符号(#)出现的第一个字母,将其删除,保存并重新启动服务器。

6

将配置指令放在.htaccess文件中时,如果没有达到预期的效果,可能会出现一些问题。

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

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

[周五09月17日18时43分16秒2010] [警惕] [客户192.168.200.51] /var/www/html/.htaccess:的DirectoryIndex这里不允许

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

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

[星期六09年8月16点22分34秒2008] [警惕] [客户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