Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.htaccess for friendly URL with multiple variables

I am working on making my site more SEO friendly I am currently using

RewriteEngine On
RewriteRule (.*)$ index.php?page=$1

To turn site.co.uk/index.php?page=page_name into site.co.uk/page_name

I want to also use this for sub pages too. I have tried this:

RewriteEngine On
RewriteRule (.*)/(.*)$ index.php?page=$1&subpage=$2

but its not working, it runs site.co.uk/page_name/sub_page but when you go to site.co.uk/page_name it returns the 404 not found.

I want it to run site.co.uk/page_name and it return page_name

or

site.co.uk/page_name/sub_page and return sub_page

and so on

site.co.uk/page_name/sub_page/sub_page2/...

like image 770
MasterT Avatar asked May 23 '26 03:05

MasterT


1 Answers

Using just:

RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

is fine then you can route the request within your script.

You split the page variable with explode() delimiter / and then set the variables.

$route = explode('/',$_GET['page']);

$page    = isset($route[0]) ? $route[0] : null;
$subpage = isset($route[1]) ? $route[1] : null;
$yada    = isset($route[2]) ? $route[2] : null;

Many MVC frameworks use this method. Its called routing.

like image 73
Lawrence Cherone Avatar answered May 24 '26 17:05

Lawrence Cherone



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!