【问题标题】:Codeigniter App works in one subdomain, but not in another. Why?Codeigniter 应用程序在一个子域中工作,但在另一个子域中不工作。为什么?
【发布时间】:2016-09-22 08:31:11
【问题描述】:

我有一个 Codeigniter 3 应用程序。我已经以这种格式正确设置了 base_url:http://subdomain.domain.com/

我将它的应用程序上传到我们通过 AWS 配置的子域,当我尝试通过以下 url 访问我的登录控制器方法时,我得到一个“404 URL not found on this server”:subdomain.domain.com/users/login .我觉得这很奇怪,因为我认为我的 htaccess 文件是正确的并且看起来像这样:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

我的类名应该是大写的,作为Users,文件名也是大写的:Users.php。

可疑,我将 app 文件夹上传到了一个完全不同的子域,一个通过 Bluehost 托管的个人子域,相应地更改了 base_url,一切正常。没有404或任何东西。

我花了很多时间研究 stackoverflow,虽然我看到了一些建议修复的问题和答案,但我遵循了这些问题并没有解决我的问题,这让我相信这可能是一个问题我们的 AWS 盒子就设置好了。它在 ubuntu 14.04 上,我创建了一个 subdomain.conf 作为创建子域的过程的一部分。我们通过 GoDaddy 获得了该域,我在其中为子域添加了 A HOST。

非常感谢任何见解!

【问题讨论】:

  • 查看一个普通的 html 文件是否在子域上工作,以验证它是否工作。
  • 什么是错误?还要检查 apache 日志。
  • @cartalot 纯 html 文件有效。加载 index.php 的控制器方法的默认路由也可以正常工作。只有当我尝试使用其他控制器方法或指向这些方法的 URL 时才能导航。检查日志,找不到任何东西。我所看到的只是在此服务器上找不到 404 URL。我注意到我的 .conf 文件没有正确的路径,所以我修复了它,但仍然没有。

标签: php apache .htaccess codeigniter amazon-web-services


【解决方案1】:

我解决了我的问题。我最终进入了我们的 apache2.conf 文件并进行了更改:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

到这里:

AllowOverride All

在所有目录上。

将 AllowOverride 从 None 更改为 All 可以放松对文档根目录的访问。如果您使用的是 linux,请记住使用 sudo service apache2 restart 重新启动 Apache。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多