简体   繁体   中英

Codeigniter - XAMP - htaccess issue

I've looked a lot of provided solutions in this site and other, but can't seem to find something that works.

I've just downloaded Codeigniter and put it in htdocs folder from Xamp. Changed its name to 'notas'. Changed notas/config/config.php the properties like this

$config['base_url'] = 'http://localhost/notas/';
$config['index_page'] = '';

Created a .htaccess file in 'notas' with many approaches. Currently, I have it like this

RewriteEngine On

RewriteBase /notas/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]

and the URL http://localhost/notas/welcome returns Object not found - 404 , where welcome is that default controller in the folder

If I put it like this, I get a 500 error

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 

If there is any other data I could provide to help solve it, please, ask for it

Thanks

EDIT

If I put the .htaccess file like

Satisfy all

or

Satisfy any

Still get 404. I've already rechecked that inside the controller folder exists a Welcome.php file

Of course, I was the one who broke it in the first place. I changed the name of /notas/index.php file thinking it was like an example and wanted to see something different. After renaming it correctly and putting the following htaccess worked

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 

Thanks for the help. Thanks specially to Amit Sharma that made me realize this

In htaccess it should be something like this

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond $1 !^(index\.php|resources|robots\.txt)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>

Base URL should be like this

$config['base_url'] = 'http://localhost/notas/';
$config['index_page'] = '';

You can use dynamic baseurl like this:

$config['base_url'] = "http://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= preg_replace('@/+$@','', dirname($_SERVER['SCRIPT_NAME'])).'/';

And in htaccess :

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

And don't forget to set $config['index_page'] = 'index'; to $config['index_page'] = ''; in config.php

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM