我正在使用.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内部服务器错误”
答案 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指令的权限。
答案 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上的问题)。