在我的新子域上,主页工作正常,但其他所有内容都会引发 500 内部服务器错误。我确定这是一个 .htaccess
问题。我在 GiftFlow.org 上有一个基于 CodeIgniter 的 Web 应用程序并且运行良好。
网络根 /var/www/vhosts/giftflow.org/httpdocs
在我的主机控制面板中,我创建了一个子域avourece.giftflow.org 并将所有内容克隆到其中。
网络根 /var/www/vhosts/favorece.giftflow.org/httpdocs
当我从浏览器调用 favorece.giftflow.org
时,索引页面显示正常,包括 CSS,但是当我尝试导航到任何其他页面时,我收到 500 内部服务器错误。我的 Apache 错误日志说:
这是我在 CodeIgniter 的 application/config/config.php 中的 base_url
$config['base_url'] = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 's' : '').'://'.$_SERVER['HTTP_HOST'].str_replace('//','/',dirname($_SERVER['SCRIPT_NAME']).'/');
而我的
.htaccess
文件,在 favorece.giftflow
的 webroot 中是:RewriteEngine on
RewriteCond $1 !^(index\.php|images|assets|user_guide|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /giftflow/index.php/$1 [L]
最佳答案
您不断重定向到 /giftflow/index.php
。 RewriteBase 可能会有所帮助,以及 RewriteRule 的其他标志。尝试:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [NC,L,QSA]
此外,CI 通常会自动检测
base_url
,因此将其留空很可能是安全的。您在 config.php
中定义的逻辑最好也放在主 index.php 文件中。关于apache - 将 CodeIgniter 安装移动到子域会导致 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9624190/