php – mod_rewrite .htaccess如果URl不存在则导致500服务器错
我刚刚开始使用mod_rewrite,这是我用于具有多种语言支持的非常基本的结构化网站:
我的想法是语言在URl的开头指示,需要是两个字符(a-z或A-Z).之后会有一个字符串引用一个PHP文件,该文件与字符串具有相同的文件名,只附加.PHP.该语言将作为GET变量添加(?lang = en). 所以,URl看起来像这样:/ en / index然后应该重定向到index.PHP?lang = en. 如果URl不是以语言开头,而是直接使用字符串,则不会将任何GET变量附加到字符串.例如. / index应该引用index.PHP.如果没有字符串,则应将index用作默认值. 到现在为止还挺好.工作正常.只要我输入一个字符串(无论我是否使用2个字符作为语言),该站点始终显示500内部服务器错误,而不是转到error404.PHP.此外,如果我在.htaccess中删除此行(404),它仍然是相同的错误. 因此,我认为.htaccess中的其他行导致此错误有问题,是否有人知道这可能是什么? 任何帮助都非常感谢! 解决方法: 你的规则是循环的.乍一看,它看起来像你的最后一个:
假设我有这个URL,http://your.domain.com/blah,文件blah.PHP不存在.这就是发生的事情. > URI = blah,! – f为true,它不是文件 这一直持续到重写引擎已经足够并返回500服务器错误. 你可以在这里做两件事之一: >添加一个指令,使所有循环停止,无论如何,这是一个很容易解决这种东西.但它会破坏需要循环的规则.我在你的规则中没有看到这样的东西,所以这样做是安全的(至少现在是这样).只需将其添加到规则的顶部:
>做一个先发制人的检查,看看PHP文件是否确实存在: (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |