Mod rewrite Mod_重写获取500服务器错误,ubuntu服务器

Mod rewrite Mod_重写获取500服务器错误,ubuntu服务器,mod-rewrite,apache2,ubuntu-server,Mod Rewrite,Apache2,Ubuntu Server,你好,今天我一直在为我的新家庭服务器苦苦挣扎。我在上面安装了最新版本的ubuntu服务器。安装了php、apache、mysql,一切看起来都很完美 我正试图建立一个网站,与我的本地机器上的XAMPP完美地工作。我一直在使用本指南设置mod_rewrite 这是我的访问权限 RewriteEngine on RewriteCond %{REQUEST_URI} !^/?index.php$ RewriteRule . index.php 这是我的默认值 ` 服务器管理员webmaster@lo

你好,今天我一直在为我的新家庭服务器苦苦挣扎。我在上面安装了最新版本的ubuntu服务器。安装了php、apache、mysql,一切看起来都很完美

我正试图建立一个网站,与我的本地机器上的XAMPP完美地工作。我一直在使用本指南设置mod_rewrite

这是我的访问权限

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/?index.php$
RewriteRule . index.php
这是我的默认值 ` 服务器管理员webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride all
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride all
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride all
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

问得好,有日志。它值得注意(
;)

如我所见,您正在尝试连接到本地URL
login/

通过你的重写规则,最后,它是

/var/www/serverpanel/index.php -> /serverpanel/index.php
它被重定向到另一个URL(不使用实际的Php),即
/serverpanel/index.Php

因此,它尝试再次应用规则,但使用
/serverpanel/index.php

正如您所猜测的,它将被重写到
index.php
,从而执行无限循环

仔细查看您的日志:

(1) [perdir /var/www/serverpanel/] internal redirect with /serverpanel/index.php [INTERNAL REDIRECT]
这可能是解决方案的关键:
perdir/var/www/serverpanel/

2个问题:

  • 这里有
    .htaccess
    文件吗
  • 如果没有任何
    .htaccess
    ,请尝试检查apacheconf文件,查找 与
    /var/www/serverpanel/
    有关的
    指令,您可以找到问题所在

希望这会有所帮助

您是否尝试过将rewrite log“rewrite.log”和rewrite LOGLEVEL 3这两行代码放在默认值中?您可能会发现它们的输出非常有用。有趣的是,这表明500错误来自PHP脚本(而不是apache配置)。我应该注意,我假设您已经检查了${APACHE\u LOG\u DIR}/error.LOG,但没有发现任何有用的东西。如果是PHP造成的问题,您可能需要在PHP文件顶部启用错误日志记录。我的理论是:在调用mod_rewrite之前,您的浏览器正在从serverpanel/login重定向到serverpanel/login/by mod_dir,而浏览器正在丢弃POST数据。这会导致index.php文件不愉快地死去。您可以使用wget-d检查任何重定向(或curl-v)。
(1) [perdir /var/www/serverpanel/] internal redirect with /serverpanel/index.php [INTERNAL REDIRECT]