【问题标题】:Website automatically changing URL to dev/production server网站自动将 URL 更改为开发/生产服务器
【发布时间】:2016-12-19 09:35:13
【问题描述】:

我继承了一个 web 应用程序,我试图在我的工作 PC 上使用 Xampp、Codeigniter 和 Netbeans 进行本地设置。

我已将项目成功导入 netbeans,可以点击运行按钮,它会在浏览器中打开。但是我有一些奇怪的行为,我真的不明白我做错了什么。

index.php 有一行:

define('ENVIRONMENT', 'development');

然后在codeigniter 应用程序文件夹中有一个包含config.php 的开发文件夹。这具有 base_url 集,当前设置为指向开发服务器(“http://exampleDevServer”)

$config['base_url'] = 'http://exampleDevServer"';

我已更改此行,使其指向本地主机上的 xampp 服务器,即

$config['base_url'] = $config['base_url']   = 'http://127.0.0.1/';

当我按下运行按钮时,它看起来像是短暂地转到该服务器,然后立即被重定向到 http://exampleDevServer

有一个 .htaccess 文件,其中包含以下内容:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^http://exampleDevServer$ [NC]
RewriteRule ^(.*)$ http://exampleDevServer/$1 [L,R=301]
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

我尝试过打开和关闭重写都没有效果。

我希望发生的是,当我在本地开发时,它从 xampp 服务器运行,然后我可以将定义更改为生产(或其他),然后它指向写入位置。我需要在上面进行哪些更改才能解决此问题?

【问题讨论】:

  • 用 xdebug 跟踪它...
  • 你检查过这个$_SERVER['HTTP_HOST']吗?
  • 注释掉RewriteEngine On行下面的2行,清除浏览器缓存并重新测试。
  • 我认为这可能是 Firefox 中的缓存问题。我在 localhost 和 127.0.0.1 上都得到了不同的结果。我重置了缓存并重置了所有更改,现在我得到一个空白屏幕。我认为这实际上是一个进步和一个不同的问题。我知道在 Firefox 上安装了一个清除缓存按钮。
  • O,在 cmets 方面我也听从了@anubhava 的建议

标签: php apache .htaccess codeigniter netbeans


【解决方案1】:

您可以更改您的配置文件 文件:application/config/config.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');


$host = (isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : 'CLI';
$config['local_ip'] = array('localhost','127.0.0.1');

if($host != 'CLI') {
    if(in_array($host,$config['local_ip'])) {
        $config['base_url'] = '';
    } else {
        $config['base_url'] = 'YOUR_LIVE_URL';
    }
} else {
    if(CLI_ENVIRONMENT == 'local') {
        $config['base_url'] = '';
    } else {
        $config['base_url'] = 'YOUR_LIVE_URL';
    }
}
?>

【讨论】:

    【解决方案2】:

    我相信这归结为http://shouldiblamecaching.com/ - 是的。随着 Firefox 自动将我引导到它认为 localhost 应该去的地方,在这种情况下是开发服务器而不是我的本地服务器。

    我还按照 cmets 中的建议将我的 htaccess 文件更改为以下内容。

    RewriteEngine on
    #RewriteCond %{HTTP_HOST} !^http://exampleDevServer$ [NC]
    #RewriteRule ^(.*)$ http://exampleDevServer/$1 [L,R=301]
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多