Skip to main content

Resolving Absolute Paths of included files from relative paths when using SEO friendly URLs

How to resolve base paths of your included files when using Htaccess mod rewrite rules for generating SEO friendly URL?

Most of the programmers might have encountered a design break issue while using mod rewrite rule in htaccess to override websites dynamic url with SEO friendly URLs

SEO friendly URLs

Search Engine Friendly URLs are purely structural URLs that do not contain a query string and instead contain only the path of the resource.

A dynamic url may look like:

http://www.awebsite.com/index.php?act=search&key=vacancies
this url may not look so pretty

You can rewrite this to a SEO friendly URL like this

http://www.awebsite.com/search/vacancies

Even though the webpage is called as http://www.awebsite.com/search/vacancies in background server is accessing the actual url of the webpage ie, http://www.awebsite.com/index.php?act=search&key=vacancies

This is done by using mod_rewrite rule in htaccess file.

Apaches mod_rewrite rule is a really sophisticated module which provides a powerful way to do URL manipulations. With it you can do nearly all types of URL manipulations you ever dreamed about.

in the .htaccess file add this

RewriteEngine On
RewriteBase /
RewriteRule ^search/([a-z0-9\-_]+)(/)?$ index.php?act=search&key=$1 [L]

ErrorDocument 404 http://www.awebsite.com/index.html



Mod rewrite - design breaks - JS and CSS Includes fails

If you are including JS and CSS file in your web pages using the relative paths like


<head>
<title> PHP techi </title>

<link rel=stylesheet type="text/css" href="include/style.css">
<script language="JavaScript" src="include/scr.js"></script>

</head>


then there is a chance like, you will see you web design break or your JS functions do not work.

this is because when you used the url rewriting the absolute url to the style.css and scr.js files (shown above) becomes :
http://www.awebsite.com/search/includes/style.css
http://www.awebsite.com/search/includes/scr.js

but it is invalid. The valid path for this files are :

http://www.awebsite.com/includes/style.css
http://www.awebsite.com/includes/scr.js

and this is the reason for your design break and JS scrpt failing.

Solution to the problem

Add a BASE tag inside the head tag just before calling all the including files.

The <base> tag specifies the base URL/target for all relative URLs in a document.
The <base> tag goes inside the <head> element.

it looks like the one below:


<head>
<title> PHP techi </title>
<base href="http://www.awebsite.com/" />
<link rel=stylesheet type="text/css" href="include/style.css">
<script language="JavaScript" src="include/scr.js"></script>

</head>


Mod rewrite - Query string checking
Usage of BASE tag
Apache Mod rewrite rule
Apache Mod rewrite Guide

Comments

Post a Comment

Popular posts from this blog

Deep-sea Anglerfish Black Seadevil Scary looking creature Video

Deep-sea Anglerfish are the strange and elusive creature that are very rarely observed in their natural habitat. Fewer than half a dozen have ever been captured on film or video by deep-diving research vehicles.They are mostly  found in tropical to temperate waters of the Indian,Pacific and Atlantic Oceans.

How to use WiFi adapter on Ubuntu 16.04 desktop PC - Realtek RTL8188EUS 802.11n Wireless USB Network Adapter Driver installation

Installation of Realtek RTL8188EUS 802.11n Wireless USB Network Adapter on Desktop PC having Ubuntu 16.04 OS My PC is running in Ubuntu 16.04 OS, recently I thought of using a dongle wife adapter to access our home's Wifi network. For this I used Realtek RTL8188EUS 802.11n Wireless USB Network Adapter ( Model No: OT-WUA950NM ) This small device cost around Rupees 250/- to Rs 300/- in India. I did the following steps for installation of this Realtek Nano Wifi Adapter: Plug Realtek RTL8188EUS 802.11n Wireless USB Network Adapter to your PC's USB port, Take the terminal application and run the command "lsusb" to list the plugged in usb devices: Myhome:~$ lsusb Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 003: ID 0bda:8179 Realtek Semiconductor Corp. R...

Cheap Tourist boat service in Alapuzha - Enjoy the beauty of Aleppey Back waters using govt owned Tourist boat services

Feasible Tourist boat services in Alapuzha Aleppey / Alappuzha is one of the beautiful places in kerala. Aleppey district is famous for it amazing backwaters , you can enjoy house boat rides here. Kerala State Water transport department  (Kerala SWTD) provides facilities for tourists to enjoy the beauty of backwater by paying much less charge when compared to private boat services. There are boat services from Aleppey boat station which takes tourists to inner parts of the backwaters.


Urgent Openings for PHP trainees, Andriod / IOS developers and PHP developers in Kochi Trivandrum Calicut and Bangalore. Please Send Your updated resumes to recruit.vo@gmail.com   Read more »
Member
Search This Blog