如何为apache服务器设置codeigniter?

Posted

技术标签:

【中文标题】如何为apache服务器设置codeigniter?【英文标题】:How to set codeigniter for apache server? 【发布时间】:2017-09-02 14:14:40 【问题描述】:

更新, 我在 Ubuntu 服务器上部署 codeigniter 项目时遇到了一些问题,单击链接时出现 404 Apache 错误。

当我将项目放入 http://roy.my-domain.com/ = /var/www/html/ 文件夹时 - 一切正常 - 但是当我添加子目录 http://roy.my-domain.com/roy/ = /var/www/html/roy/ - 我得到 404错误。

当我的网址是 http://roy.my-domain.com/roy/index.php/about - 我得到 codeigniter 404 错误而不是 apache2。

错误:

找不到

在此服务器上找不到请求的 URL /index.php。

Apache/2.4.18 (Ubuntu) 服务器位于 roy.my-domain.com 端口 80

这是我的设置:

0 。检查 Apache 中的重写模块 - 得到“模块重写已启用”

1 . 我的项目在 /var/www/my-project/

2 。 包含以下内容: 应用 系统 public_html 索引.php .htaccess

    .htaccess 文件:

    重写引擎开启 RewriteBase /html/my-project/ RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d

    # 将所有其他 URL 重写为 index.php/URL RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

    错误文档 404 index.php

    apache2.conf:

    选项索引 FollowSymLinks 要求所有授予 目录>

    选项索引 FollowSymLinks 允许覆盖所有 要求所有授予 目录>

    config.php:

    $config['base_url'] = 'http://roy.my-domain/my-project/'; $config['index_page'] = ''; $config['uri_protocol'] = 'AUTO';

    index.php:

    (不适用于 ../system 和 ../application) $system_path = '系统'; $application_folder = '应用程序';

    控制器:

    (codeigniter 默认视图) Welcome.php About_Controller.php

    观点: (codeigniter 默认视图)welcome_message.php about.php

本地 - 一切正常...谢谢

【问题讨论】:

能否提供Apache错误日志? 嗨 - 谢谢 - Apache 服务器没有错误 - 我无法查看除主页之外的任何页面 - 单击链接时 - 我收到“页面无法显示”错误 Viktor - 我设置了 $config['index_page'] = '';现在我收到一个错误 - 我用错误内容更新我的帖子 所以,现在一定是Apache错误日志中的一些错误。 【参考方案1】:
<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
 </Directory>   

.htaccess:

    RewriteEngine On
    RewriteBase /html/project/

    RewriteCond %THE_REQUEST \s/+(.*?)/2,([^\s]*)
    RewriteRule ^ %1/%2 [R=302,L,NE]

    RewriteCond %THE_REQUEST ^[A-Z]3,\s/+(.+?)/2,[?\s] [NC]
    RewriteRule ^ /%1/ [L,R=301]

    RewriteCond %HTTP_HOST !^www\. [NC]
    RewriteRule ^ http://www.%HTTP_HOST%REQUEST_URI  [R=301,L]

    RewriteCond %REQUEST_URI system|application
    RewriteRule ^(.*)$ index.php?/$1 [L]

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

试试这个配置,别忘了重新加载 Apache。

【讨论】:

【参考方案2】:

设置 CodeIgniter 的简单步骤。

    下载并提取您的 CodeIgniter public_html 或 var/www/project 您的域指向的位置。

    以 URL 形式打开您的项目:https://example.com/project。如果您收到欢迎 CodeIgniter 消息,那么您必须成功安装 CodeIgniter。

    确保在您的服务器上启用了 mod_rewrite。

    在 database.php 中 > 传递您的凭据 在 .htaccess 中编写代码以从 url 中删除 index.php:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

我认为这将是设置项目的完整过程。确保在服务器上启用 mod_rewrite。谢谢

【讨论】:

仍然无法显示链接 - config.php 中可能有问题我将 base_url 配置为 mysite.domain.com 并将 index_page 配置为 index.php 对于 base_url .. 你必须设置 $confi['base_url '] ="mysite.domain.com"..\ 还有一件事...您的链接是否与 index.php 一起使用 另外,请在您的 IP 地址处检查您的域点。例如点击这里ping.eu/ping【参考方案3】:

此错误可能由以下原因触发:

服务器配置错误 (httpd.conf)

.htaccess 问题

mod_security 或类似的

    在“var/www/my_project”中上传您的项目。

    在配置文件中:$config['base_url'] = '';$config['index_page'] = '';

    将此代码添加到您的 .htaccess 文件中以删除 index.php 并将此 .htaccess 文件放在主文件夹中。

     <IfModule mod_rewrite.c>
       RewriteEngine On
    
      RewriteCond %REQUEST_FILENAME !-f
      RewriteCond %REQUEST_FILENAME !-d
    
      # Rewrite all other URLs to index.php/URL
      RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
    
       </IfModule>
       <IfModule !mod_rewrite.c>
            ErrorDocument 404 index.php
       </IfModule>
    

Set AllowOverride to All 在你的 httpd.conf 中

在 /cache 文件夹上设置正确的权限,而不是仅仅使文件夹可写,您需要使其隐匿可写。

我希望它对你有用。

【讨论】:

Jay Kareliya -谢谢 - 但现在我根本无法访问该网站 - 当我转到 my_site.my_domain.com/my_project - 它会将我重定向到 www.my_site.my_domain.com/my_project - 任何想法为什么?

以上是关于如何为apache服务器设置codeigniter?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 HTTPS (SSL) 配置 Codeigniter?

如何为真正的多语言网站设置 CodeIgniter?

如何为codeigniter设置cron作业url?

如何为 CodeIgniter 设置 date.timezone 以使用 php 5.3

如何为 React 路由设置 apache 服务器?

如何为运行 WHM 的服务器设置默认的 Apache 登录页面?