SEO: URL Rewrite for 4images

Well, I just have done optimize SEO for one of my website using 4images gallery system it’s on https://www.innovativedesktop.com basically I play with meta title, keywords, and description. And now I’m using URL rewrite. URL look cool and more search engine friendly I believe after a week or month it will indexed in lot of search engine 😀

Here is the way for you’re to using URL rewrite on 4images to make it more search engine friendly REMEMBER this will eat CPU resources. (before you doing this I recommended to backup your files first). Any alternative you can learn about URL rewrite yourself to make it works as you want (google is the best teacher).

1. You need to make .htaccess file and put this code on it

RewriteEngine On
RewriteRule ^lightbox\.html$ lightbox.php?%{QUERY_STRING}
RewriteRule ^lightbox\.([0-9]+)\.html$ lightbox.php?page=$1&%{QUERY_STRING}
RewriteRule ^search\.html$ search.php?%{QUERY_STRING}
RewriteRule ^search\.([0-9]+)\.html$ search.php?page=$1&%{QUERY_STRING}
RewriteRule ^postcard([a-zA-Z0-9]+)\.html$ postcards.php?postcard_id=$1&%{QUERY_STRING}
RewriteRule ^postcard\.img([0-9]+)\.html$ postcards.php?image_id=$1&%{QUERY_STRING}
RewriteRule ^k_(.*)_([0-9]+).html categories.php?cat_id=$2&%{QUERY_STRING}
RewriteRule ^r_(.*)_([0-9]+).html details.php?image_id=$2&%{QUERY_STRING}
RewriteRule ^r([0-9]+).search.html details.php?image_id=$1&%{QUERY_STRING}

2. Open /include/sessions.php before the last line add this code

//Mod_bmollet
/**
* Get the category url
* @param int $cat_id The id of the category
* @param string $cat_url The current status of the URL
*/
function get_category_url($cat_id,$cat_url = ”)
{
global $site_db;
$sql = “SELECT cat_name,cat_parent_id FROM “.CATEGORIES_TABLE.” WHERE cat_id = ‘”.$cat_id.”‘”;
$result = $site_db->query($sql);
$row = $site_db->fetch_array($result);
$row[‘cat_name’] = strtr($row[‘cat_name’], “ABCDEFGHIJKLMNOPQRSTUVWXYZ”,”eeeaeauoiaabcdefghijklmnopqrstuvwxyz”);
$cat_url = ‘_’.str_replace(‘+’,’_’,urlencode($row[‘cat_name’])).’_’.$cat_id.$cat_url;
// if you want full path of category in url, put next line in comment
return $cat_url;
if( $row[‘cat_parent_id’] != 0)
{
return get_category_url($row[‘cat_parent_id’],$cat_url);
}
else
{
return $cat_url;
}
}
//Mod_bmollet
/**
* Get the image url
* @param int $image_id The id of the image
*/
function get_image_url($image_id)
{
global $site_db;
$sql = “SELECT cat_id,image_name FROM “.IMAGES_TABLE.” WHERE image_id = ‘”.$image_id.”‘”;
$result = $site_db->query($sql);
$row = $site_db->fetch_array($result);
$row[‘image_name’] = strtr($row[‘image_name’], “ABCDEFGHIJKLMNOPQRSTUVWXYZ”,”eeeaeauoiaabcdefghijklmnopqrstuvwxyz”);
// if you want comlpete path to image in url, remove comment from following line
//return get_category_url($row[‘cat_id’]).’-‘.str_replace(‘+’,’-‘,urlencode($row[‘image_name’])).’-‘.$image_id;
return ‘_’.str_replace(‘+’,’_’,urlencode($row[‘image_name’])).’_’.$image_id;
}

3. Find this code on /include/sessions.php

function url($url, $amp = “&”) {
global $l;
$dummy_array = explode(“#”, $url);
$url = $dummy_array[0];

if ($this->mode == “get” && !preg_match(“/”.SESSION_NAME.”=/i”, $url)) {
$url .= preg_match(“/\?/”, $url) ? “$amp” : “?”;
$url .= SESSION_NAME.”=”.$this->session_id;
}

if (!empty($l)) {
$url .= preg_match(“/\?/”, $url) ? “$amp” : “?”;
$url .= “l=”.$l;
}

$url .= (isset($dummy_array[1])) ? “#”.$dummy_array[1] : “”;
return $url;
}

Replace it with this code

/* ORIGINAL CODE
function url($url, $amp = “&”) {
global $l;
$dummy_array = explode(“#”, $url);
$url = $dummy_array[0];

if ($this->mode == “get” && !preg_match(“/”.SESSION_NAME.”=/i”, $url)) {
$url .= preg_match(“/\?/”, $url) ? “$amp” : “?”;
$url .= SESSION_NAME.”=”.$this->session_id;
}

if (!empty($l)) {
$url .= preg_match(“/\?/”, $url) ? “$amp” : “?”;
$url .= “l=”.$l;
}

$url .= (isset($dummy_array[1])) ? “#”.$dummy_array[1] : “”;
return $url;
}
*/
function url($url, $amp = “&”) {
global $l, $user_info;
$dummy_array = explode(“#”, $url);
$url = $dummy_array[0];
$url = str_replace(‘&’, ‘&’, $url);
if (!defined(‘IN_CP’)) {
if (strstr($url, ‘index.php’)) {
$url = str_replace(‘index.php’, ”, $url);
}
elseif (strstr($url, ‘search.php’)) {
if (strstr($url, ‘page=’)) {
preg_match(‘#page=([0-9]+)&?#’, $url, $matches);
if (isset($matches[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$url = str_replace(‘search.php’, ‘search.’.$matches[1].’.html’, $url);
$query = str_replace(‘page=’.$matches[1].’&’, ”, $query);
$query = str_replace(‘&page=’.$matches[1], ”, $query);
$query = str_replace(‘page=’.$matches[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
else {
$url = str_replace(‘search.php’, ‘search.html’, $url);
}
}
elseif (strstr($url, ‘lightbox.php’)) {
if (strstr($url, ‘page=’)) {
preg_match(‘#page=([0-9]+)&?#’, $url, $matches);
if (isset($matches[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$url = str_replace(‘lightbox.php’, ‘lightbox.’.$matches[1].’.html’, $url);
$query = str_replace(‘page=’.$matches[1].’&’, ”, $query);
$query = str_replace(‘&page=’.$matches[1], ”, $query);
$query = str_replace(‘page=’.$matches[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
else {
$url = str_replace(‘lightbox.php’, ‘lightbox.html’, $url);
}
}
elseif (strstr($url, ‘categories.php’)) {
if (strstr($url, ‘cat_id=’) && strstr($url, ‘page=’)) {
preg_match(‘#cat_id=([0-9]+)&?#’, $url, $matches1);
preg_match(‘#page=([0-9]+)&?#’, $url, $matches2);
if (isset($matches1[1]) && isset($matches2[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$url = str_replace(‘categories.php’, ‘cat’.$matches1[1].’.’.$matches2[1].’.html’, $url);
$query = str_replace(‘cat_id=’.$matches1[1].’&’, ”, $query);
$query = str_replace(‘&cat_id=’.$matches1[1], ”, $query);
$query = str_replace(‘cat_id=’.$matches1[1], ”, $query);
$query = str_replace(‘page=’.$matches2[1].’&’, ”, $query);
$query = str_replace(‘&page=’.$matches2[1], ”, $query);
$query = str_replace(‘page=’.$matches2[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
elseif (strstr($url, ‘cat_id=’)) {
preg_match(‘#cat_id=([0-9]+)&?#’, $url, $matches);
if (isset($matches[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$cat_url = get_category_url($matches[1]);
$url = str_replace(‘categories.php’, ‘cat’.$cat_url.’.html’, $url);
$query = str_replace(‘cat_id=’.$matches[1].’&’, ”, $query);
$query = str_replace(‘&cat_id=’.$matches[1], ”, $query);
$query = str_replace(‘cat_id=’.$matches[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
else {
$url = str_replace(‘categories.php’, ‘cat.html’, $url);
}
}
elseif (strstr($url, ‘details.php?image_id=’)) {
if (strstr($url, ‘image_id=’) && strstr($url, ‘mode=’)) {
preg_match(‘#image_id=([0-9]+)&?#’, $url, $matches1);
preg_match(‘#mode=([a-zA-Z0-9]+)&?#’, $url, $matches2);
if (isset($matches1[1]) && isset($matches2[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$url = str_replace(‘details.php’, ‘img’.$matches1[1].’.’.$matches2[1].’.html’, $url);
$query = str_replace(‘image_id=’.$matches1[1].’&’, ”, $query);
$query = str_replace(‘&image_id=’.$matches1[1], ”, $query);
$query = str_replace(‘image_id=’.$matches1[1], ”, $query);
$query = str_replace(‘mode=’.$matches2[1].’&’, ”, $query);
$query = str_replace(‘&mode=’.$matches2[1], ”, $query);
$query = str_replace(‘mode=’.$matches2[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
else {
preg_match(‘#image_id=([0-9]+)&?#’, $url, $matches);
if (isset($matches[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$url = str_replace(‘details.php’, ‘img’.get_image_url($matches[1]).’.html’, $url);
$query = str_replace(‘image_id=’.$matches[1].’&’, ”, $query);
$query = str_replace(‘&image_id=’.$matches[1], ”, $query);
$query = str_replace(‘image_id=’.$matches[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
}
elseif (strstr($url, ‘postcards.php?image_id=’)) {
preg_match(‘#image_id=([0-9]+)&?#’, $url, $matches);
if (isset($matches[1])) {
$split = explode(‘?’, $url);
$url = $split[0];
$query = @$split[1];
$url = str_replace(‘postcards.php’, ‘postcard.img’.$matches[1].’.html’, $url);
$query = str_replace(‘image_id=’.$matches[1].’&’, ”, $query);
$query = str_replace(‘&image_id=’.$matches[1], ”, $query);
$query = str_replace(‘image_id=’.$matches[1], ”, $query);
if (!empty($query)) {
$url .= ‘?’ . $query;
}
}
}
}
if ($this->mode == “get” && strstr($url, $this->session_id)) {
$url .= strpos($url, ‘?’) !== false ? ‘&’ : ‘?’;
$url .= SESSION_NAME.”=”.$this->session_id;
}
if (!empty($l)) {
$url .= strpos($url, ‘?’) ? ‘&’ : ‘?’;
$url .= “l=”.$l;
}
$url = str_replace(‘&’, $amp, $url);
$url .= isset($dummy_array[1]) ? “#”.$dummy_array[1] : “”;
return $url;
}

Not sure on what are you doing?! just download this package file and put it on your hosting server! seo.rar

And.. you’re done! congratulation 😀 You can modify the code to make it works like you want. Anyway if you need to make script more stronger for SEO you might need to coding auto sitemap each time there is new images added. I try but no luck (not sure if xml works fine and accepted by most search engine because it’s works on IE but not showing correctly on firefox) maybe next time I will write it.

Similar Posts:

RELATED SEARCH TERMS:

70 thoughts on “SEO: URL Rewrite for 4images”

  1. Istanto, big thanks for this tips I try it and it works in my website I will back soon to read your another article

  2. nice article, i was looking this way long time ago.. how you can implement this script into phpmotion script?

  3. Using 4images 1.7.6 and I recieve the following error after appling the mod:

    Parse error: syntax error, unexpected ‘&’, expecting ‘)’ in /home/karaya/public_html/includes/sessions.php on line 401

    This is the line 401 – function url($url, $amp = “&”) {

    Any ideas?

    Thanks!

    Ray

  4. Do you mean change my sessions.php using notepad? I’m using UltraEdit. Perhaps if I use the DOS mode text editing feature?

    Thanks for all your help!

    Ray

  5. Yes, I’m sure problem in editor(I’m usually use notepad, always when change everything) or maybe because my fault make this code not run on your site, when I type character ” in article it changed into this character “ so this will make php false to execute.

  6. Hello and thankyou. Had it working okay until I discovered my New Images page would 404 when you clicked the thumbnail. I switched back to the default sessions.php until I can figure out why my New Images page will not work properly. Any ideas or suggestions?

    Thanks!

    Ray

  7. After having loads of hassle trying to work out google friendly URLS I was so lucky to find your page, I am using 1.7.6 and used your downloadable pages, uploaded them and hey! it worked 1st time, I just wanted to post a big thank you!

    Martin

  8. Hello peoples! 🙂 If somebody knows, tell me! I trying to find a text about Great Britan Can somebody help me ti find it? Thanks!

  9. Hello,

    Thanks for your great job!

    I have made necessary modifications as you mentioned,my problem is, any image page is displayed as a static .htm page but categories are always displayed as .php?cat_id=22.

    For your information my site is hosted in multiple domain host package,is this why categories are displayed as intented ?

    what else i need to make category.php? to be dispayed as .htm page

    Any Help would be appreciated
    Regards,
    zorex

  10. I converted the .htaccess code into lighttpd rewrite rules (not done yet, just a small change it will working), if someone need this code just talk to me 😀

  11. Read in your .htaccess find RewriteRule ^k_(.*)_([0-9]+).html categories.php?cat_id=$2&%{QUERY_STRING} Change that code to RewriteRule ^k-(.*)-([0-9]+).html categories.php?cat_id=$2&%{QUERY_STRING}

  12. Just add this code into your theme header files {image_description} it will extract your image description to target the better search result on search engine.

  13. hello, does this trick works on any version?

    i’m using 4images 1.7.7, i applied your chages, but no result… it’s just like in the beginning

  14. it’s work for 4images version 1.7.4 not sure about new version some people reports it works some didn’t works. I think it can be used on new version but you have to understand the structure first, I will write for new version when I’m free.

  15. Excellent tips. Implemented to one of my client’s site successfully. But now the problem is with duplicate content.
    Example – 1) http://jokesprank.com/gallery/r18.search.html
    2) http://jokesprank.com/gallery/r_funny_dog_pictures_5_funny_dog_picture_-_surprised_pug_18.html

    Both are pointing to same ditto content. Any idea how to remove them? I want to noindex the first one. I could not find out a way to write something in robots.txt or add a meta robot on that page. Any idea?

  16. It is extremely helpful for me.Amazing post and

    everyone has submit their mature views regarding this,I very interested in the article,people pay more attention to high quality life style.

    High quality means ,comfortable and healthy,Thanks for sharing the info.Regards,

  17. Anyway if you need to make script more stronger for SEO you might need to coding auto sitemap each time there is new images added. You may copy or publish this article to your blog or other site as long you give credit link back to this site article. No hicups and no issues at all.php before upload it backup your first. I switched back to the default sessions.php until I can figure out why my New Images page will not work properly.htm page but categories are always displayed as . But now the problem is with duplicate content. I could not find out a way to write something in robots.txt or add a meta robot on that page.This is my google

  18. I will, last week ago I working on sitemap generator on manga247.com, the real files is sitemap.php but I change it via .htaccess to become sitemap.xml, it’s fully automatic updated when there is new content, I will share the tutorials maybe in next days.

  19. Youre so cool! I dont suppose Ive read something like this before. So good to find somebody with some authentic thoughts on this subject. realy thank you for beginning this up. this web site is something that is wanted on the net, someone with just a little originality. useful job for bringing one thing new to the web!

  20. i use this code for my htaccess

    # Begin search engine friendly links code
    RewriteEngine On
    RewriteBase /
    RewriteRule ^lightbox\.htm$ lightbox.php?%{QUERY_STRING}
    RewriteRule ^lightbox\.([0-9]+)\.htm$ lightbox.php?page=$1&%{QUERY_STRING}

    RewriteRule ^search\.htm$ search.php?%{QUERY_STRING}
    RewriteRule ^search\.([0-9]+)\.htm$ search.php?page=$1&%{QUERY_STRING}

    RewriteRule ^cat\.htm$ categories.php?%{QUERY_STRING}
    RewriteRule ^cat([0-9]+)\.([0-9]+)\.htm$ categories.php?cat_id=$1&page=$2&%{QUERY_STRING}
    RewriteRule ^cat([0-9]+)\.htm$ categories.php?cat_id=$1&%{QUERY_STRING}

    RewriteRule ^img([0-9]+)\.htm$ details.php?image_id=$1&%{QUERY_STRING}
    RewriteRule ^img([0-9]+)\.([a-zA-Z0-9]+)\.htm$ details.php?image_id=$1&mode=$2&%{QUERY_STRING}

    RewriteRule ^postcard([a-zA-Z0-9]+)\.htm$ postcards.php?postcard_id=$1&%{QUERY_STRING}
    RewriteRule ^postcard\.img([0-9]+)\.htm$ postcards.php?image_id=$1&%{QUERY_STRING}

    # End search engine friendly links code

    and only change 1 part of my sessions.php
    not 2 part like this tutorials
    because when i change the two part it’s get error

  21. hello, my name is Aaron Medina and living in the Canary Islands (Spain). I write because I need your help, I would write to my mail. Greetings and in advance. Thank you.

  22. Hello,

    You can maybe even the whole update for version 1.7.10? I have completed the changes and I can not log in anymore. Error: The user does not exist.
    For help, I would be very grateful.
    Best regards
    Bernd

  23. Try to get Version 1.7.4 this code working on v 1.7.4 without any error. You can modify this code to working on v 1.7.10 but you have to understand the structure of the script first then change everything needed.

  24. I’ve discovered some great concepts on this web site and i also will bookmark the concept.

  25. so what can I actually do? What can I only say? Some suggestions might be tremendously appreciated.

  26. Woah! I’m really loving the template/theme of this website. It’s simple,
    yet effective. A lot of times it’s hard to get that “perfect balance” between superb usability and visual appearance. I must say you have done a fantastic job with this. Also, the blog loads super fast for me on Safari. Outstanding Blog!

  27. wonderful issues altogether, you just received a logo new reader.
    What would you suggest in regards to your post that you simply
    made some days ago? Any positive?

  28. Hi, I desire to subscribe for this webpage to obtain most recent updates, so where can i do it please help out.

  29. Hi everyone, it’s my first pay a visit at this web site, and
    piece of writing is truly fruitful in favor of me, keep up posting these types of articles.

  30. the hypothyroidism revolution

    Post is pretty nicely written, and never forgetting to mention that it might be particularly informative also. Kudos to you towards the exceptional job nicely completed there!

  31. I have recently started a web site, the info you offer on this web site has helped me tremendously. Thank you for all of your time & work.

  32. robably the most important thing that you would want
    to concentrate upon when running this business. Call or e-mail
    the medical center or clinic to check prices if you’re able
    to do so. As the longer you live with eye problems the more complex your surgery becomes which in turn increases costs.

  33. Please let me know if you’re looking for a writer for your site.
    You have some really good articles and I think I would
    be a good asset. If you ever want to take some of the load off,
    I’d absolutely love to write some articles for your blog in exchange for a link back to mine.
    Please shoot me an email if interested. Thanks!

  34. Pingback: Google

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.