I have the following in my htacces file
RewriteCond %{THE_REQUEST} [1]+\ /(accommodation\.php)?\?id=([0-9]+)(#[^\ ]*)?\ HTTP/
RewriteRule ^(accommodation\.php)?$ http://www.example.com/%2? [R=301,L]
RewriteRule ^([0-9]+)$ accommodation.php?id=$1 [L]
The above works fine and produced the desired result (using id 89 as example):
http://www.example.com/89 instead of the old result http://www.example.com/accommodation.php?id=89
and broswers redirct work fine too!
What we are trying to do, rather than just have the url say: http://www.example.com/89 is to insert the type of property it actually is into the url something like: http://www.example.com/Apartment/89
NEW REWRITE RULE:
The new rewrite rule has been changed to:
RewriteRule ^([A-Z][a-z]+)/([0-9]+)$ accommodation.php?accommodation_type$1&id=$2 [L]
Using the ‘accommodation type’ from the ‘accommodation_type’ field in the database.
The new rewrite rule above works fine for internal links within the site returning: http://www.example.com/Apartment/89
or
http://www.example.com/House/89
or
whatever the accommodation_type is in the database.
The php code is like this…<a href=‘“.$row[accommodation_type].”/“.$row[“id”].”’> for links within the site.
But I can not get the external 301 redirect part - this…
RewriteCond %{THE_REQUEST} [2]+\ /(accommodation\.php)?\?id=([0-9]+)(#[^\ ]*)?\ HTTP/
RewriteRule ^(accommodation\.php)?$ http://www.example.com/%2? [R=301,L]
…to work!
It seem as though something needs to be added between example.com/HERE! AND/%2?
Is it seeing the ‘accommodation_type’ as a folder that doesn’t exist.
Thanks!