Randall Wolff
Randall Wolff

Reputation: 7

404/net::ERR_ABORTED error for assets in codeigniter

I'm working through my first Codeigniter webpage, and I've run into a few peculiarities. The first is that I haven't needed to use base_url or site_url in front of my URLs to get them to work, at least not originally. I set up the main page, and simply did

<link href="assets/css/bootstrap.min.css" rel="stylesheet" />

and this seemed to automatically add the domain name in front of it. I'm not sure how it worked, but it works for all the URLs like it. When I look at the inspect window, it shows like this. I don't know if this is relevant, but I wanted to make note of it.

The issue was on my second page. I added a new controller named Admin, and set it to bring up a different page. I set up the URLs in the same way I did before, but when I loaded it, the CSS and Javascript didn't load. In case it matters, I tried loading it by doing Domainname.com/Admin. The html loads correctly, but when I looked at the console, it gave me a net::ERR_ABORTED and 404 errors for my images and files. I've double checked all of them, and they are all in the correct spot. I found this page: 404 page not found error in Codeigniter and tried using the solution there in my .htaccess file. It not only didn't work, but now the original page that was working correctly refuses to load up any of the asset files. I tried removing the new line of code, but it still will not work correctly, even though everything is the exact same way it was before.

Here is my .htaccess folder:

RewriteEngine On
RewriteBase /eventCentral/

RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d

#RewriteCond $1 !^(index\.php|assets)

RewriteRule ^ index.php [QSA,L]

I tried removing the commented piece of code completely, but it still didn't fix it.

My file structure is also correct, and can be seen here.

As I said, I'm still very new to code igniter, so if answers can be broken down Barney style, I'd appreciate it. I've also tried looking through a number of stack overflow questions that seemed relevant, and I still haven't found a solution that works.

Upvotes: 0

Views: 19096

Answers (2)

Brialan Gracia
Brialan Gracia

Reputation: 1

RewriteCond $1 !^(index.php|assets|myadmin|robots.txt)

Upvotes: 0

Brian Gottier
Brian Gottier

Reputation: 4582

You don't have to use the URL helper's functions, but unless you prefix your URLs with a forward slash, the BROWSER decides that your asset is actually prefixed with the URI segments from the current page. That's because the browser sees the URL as a relative URL. In order to overcome that, either use the forward slash, or a base tag: https://www.w3schools.com/tags/tag_base.asp

Example of base tag:

<base href="https://example.com/">

In my own applications, I just make my URLs absolute with the forward slash prefix. In your case that would look like this:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet" />

EDIT ----

I just noticed that your htaccess has 2 lines, and I'd like you to convert the parens to curly braces, so:

RewriteCond %(REQUEST_FILENAME) !-f

Should be:

RewriteCond %{REQUEST_FILENAME} !-f

Just for kicks, try to change this:

RewriteRule ^ index.php [QSA,L]

To this:

RewriteRule .* index.php/$0 [PT,L]

Upvotes: 2

Related Questions