Roy*_*rOn 3 php apache .htaccess mod-rewrite codeigniter
这是我第一次将 codeigniter 项目上传到生产环境,并且从 Apache 服务器收到错误 404。
错误: 未找到 在此服务器上未找到请求的 URL /index.php。Apache/2.4.18 (Ubuntu) 服务器位于 roy.my-domain.com 端口 80
每一篇文章我都看了两天了,还是没找到解决办法。。。。
这是我的设置:
检查 Apache 中的重写模式 - 得到“模块重写已启用” 我的项目位于/var/www/roy/所以 url 是roy.my-domain.com/roy
Apache2.conf
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
Run Code Online (Sandbox Code Playgroud).htaccess
<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>
Run Code Online (Sandbox Code Playgroud)配置文件
$config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/roy/';
$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)autoload.php(我正在使用Twig)
$autoload['libraries'] = array('database','session','twig');
Run Code Online (Sandbox Code Playgroud)
控制器结构
name Login.php -
class Login extends CI_Controller
Run Code Online (Sandbox Code Playgroud)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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
3 - 如果不是开发,那么使用$_SERVER['HTTP_HOST']超全局永远不是一个好的实践。可以从客户端更改。只需使用正确的网址即可。
完成所有这些后,重新启动 apache。在Ubuntu中是:$ sudo service apache2 restart
| 归档时间: |
|
| 查看次数: |
8279 次 |
| 最近记录: |