如何为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?