Search code examples
php.htaccessmod-rewritefriendly-urlabsolute-path

Friendly URL with parameters. stylesheet, script issues


I have a frontend project written in pure HTML + PHP file extension, just for server side include since I'm using an MVC pattern.

For the friendly URL's im using mod_rewrite in the following way

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

# Remove all .php extensions
RewriteRule ^(.*)$ $1.php

# This is a page with pagination
RewriteRule ^blogs/([0-9]+) blogs.php?page=$1

So URL goes like

http://www.mysyte.com/blogs and

http://www.mysyte.com/blogs/1 // for an additional parameter

Problem is going on the second URL while running the project in Wamp opens the site with no stylesheets at all, or even scripts

I read in one of SO's answers to use base tag

My project is under the folder

wamp < www < project

So to access it on the browser i use

http://localhost/project

Tried with the following <base> tag:

<base href="/project/" />

It didn't worked.

What can I do in this case? I'm kinda stuck


Solution

  • Your stylesheets and images must be referenced using a relative path.

    Example:

    <link rel="stylesheet" type="text/css" href="url/to/mystyle.css">
    

    The easiest fix would be an absolute path:

    <link rel="stylesheet" type="text/css" href="http://example.com/project/url/to/mystyle.css">
    

    Typically, in many systems, the root domain is stored as a constant and then whenever you output a link or the URL to a stylesheet, you echo that constant before the path. This way, your paths are truly absolute, but can be easily changed. In my example above, the 'base url' constant would be 'http://example.com/project/' and it would be echo'd before each of the relative paths.