codeigniter路由在默认var/www/html文件夹内的live server中没有index.php时无法工作
Codeigniter路由在本地服务器中工作。当我部署到服务器的var/www/html时,路由没有按预期工作 当我在URL中的控制器名称之前添加index.php时,它可以正常工作 但如果没有index.php,它会抛出404页面未找到错误 .htaccess文件 我也试过这个codeigniter路由在默认var/www/html文件夹内的live server中没有index.php时无法工作,php,apache,codeigniter,codeigniter-3,Php,Apache,Codeigniter,Codeigniter 3,Codeigniter路由在本地服务器中工作。当我部署到服务器的var/www/html时,路由没有按预期工作 当我在URL中的控制器名称之前添加index.php时,它可以正常工作 但如果没有index.php,它会抛出404页面未找到错误 .htaccess文件 我也试过这个 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /var/www/html/ RewriteRule ^index\.ph
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /var/www/html/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
但什么都不管用。尝试以下解决方案:
转到application\config\config.php文件
改变
到
.htaccess
第一步
转到application/config/config.php
发现
步骤2
转到application/config/routes.php
在注释结束后删除页面底部的所有内容,并粘贴到下面的代码中
$route['default_controller'] = 'main'; // main is your default controller name
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = "main/$1";
$route['admin'] = 'admin/login';
步骤3
在根文件夹中添加名为.htaccess的新文件,其中包含名为application和system等的文件夹
添加以下代码并打开网站
RewriteEngine On
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_METHOD} POST [NC]
RewriteRule ^ - [L]
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
Header set Access-Control-Allow-Origin "*"
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
您的服务器似乎未启用mod_rewrite。 如果重写规则不起作用,请确保在Apache配置文件中允许.htaccess文件。目录部分应包含AllowOverride All选项:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
不要忘记,对Apache配置文件的任何更改都需要重新启动服务 不工作。我试了所有的。有什么需要改变的吗?这个问题只发生在ubuntu服务器上。我可以知道你们控制器的url吗?表示您安装的位置CI@NithinM请核对我的答案
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /YourCIFolderName/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /YourCIFolderName/index.php [L]
</IfModule>
$config['index_page'] = 'index.php';
change it to
$config['index_page'] = '';
$route['default_controller'] = 'main'; // main is your default controller name
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = "main/$1";
$route['admin'] = 'admin/login';
RewriteEngine On
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_METHOD} POST [NC]
RewriteRule ^ - [L]
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
Header set Access-Control-Allow-Origin "*"
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>