这是我第一次将codeigniter项目上传到制作中,并且我从Apache服务器收到错误404。
错误: 未找到 在此服务器上找不到请求的URL /index.php。 roy.my-domain.com上的Apache / 2.4.18(Ubuntu)服务器端口80
我已经阅读了每篇文章2天,但没有找到解决方案......
所以这是我的设置:
检查Apache中的重写模式 - 获得“模块重写已启用” 我的项目位于 / var / www / roy / ,因此网址为 roy.my-domain.com/roy
Apache2.conf
O(n log n)
的.htaccess
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
的config.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /roy/
RewriteRule ^([a-z0-9_-]+)\.html$ index.php/page/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|asset|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
autoload.php(我正在使用Twig)
$config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/roy/';
$config['index_page'] = '';
控制器结构
$autoload['libraries'] = array('database','session','twig');
答案 0 :(得分:2)
在site
个文件夹中创建一个html
文件夹。然后,将您的roy
网站放在那里。然后,我会这样做:
1 - apache2 / sites-enabled / roy.my-domain.com.conf
<VirtualHost roy.my-domain.com:80>
DocumentRoot /var/www/html/site
ServerName roy.my-domain.com
<Directory /var/www/html/site>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
2 - .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
3 - 如果不是开发,使用$_SERVER['HTTP_HOST']
超全局绝不是一个好习惯。可以从客户端更改。只需使用正确的网址。
完成所有操作后,重新启动apache。在Ubuntu中是:$ sudo service apache2 restart
答案 1 :(得分:0)
我假设您的.htaccess
文件位于/roy
子目录中?
由于您正在使用URL上的路径信息(即/index.php/<path-info>
)来路由请求,因此可能在服务器上禁用了AcceptPathInfo
。如果是禁用然后这样的请求将导致404。
因此,请尝试在.htaccess
文件的顶部启用此功能:
AcceptPathInfo On