Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[CONTRIBUTION] Ultimate SEO URLs v2.1 - by Chemo


Recommended Posts

Hi

 

Just install fast easy checkout on top of Ultimate SEO URLs with SSL turned on.

But every time I try and checkout the site kicks me back to the logon page.

 

If I true SSL off all works fine.

Same if I turn SEO of all works fine.

 

Has any one else had this problem, if so how was it fixed.

 

Thanks if you can help.

Link to comment
Share on other sites

how can i increase "Enter special character conversions" limit of characters to type?

osclearner,

 

Those characters are stored in the configuration table. Theoretically, you could changed the table, but not a that's not a good idea.

 

I helped another member to add a function to the seo.class.php file which converted Cyrillic characters to the Roman Alphabet equivalents. Would something like that work for you?

 

-Skittles

Link to comment
Share on other sites

Same here the c-6.html etc...removal would be great, (although Im still hoping someone would have some insight on changes the pages it serves from hypens in between the words to underscores instead :(

You guys are stuck with the numbers. (And I know how to change the hyphens to underscores. keep reading...)

 

Those numbers are the ID number from the corresponding database table (i.e. products_id, categories_id, manufacturers_id, etc.)

 

You can, however, make changes to how the numbers are presented. On the cart where I have this installed, all my category pages come up as index pages, like this: "category_name/index.3.php" or whatever the category number is. My product pages come up like this: "product_name.p53.html".

 

To support changes like this, you need to make changes in the seo.class.php file in this code:

 

		$this->reg_anchors = array('products_id' => '-p-',
						 'cPath' => '-c-',
						 'manufacturers_id' => '-m-',
						 'pID' => '-pi-',
						 'tPath' => '-t-',
						 'articles_id' => '-a-',
						 'products_id_review' => '-pr-',
						 'products_id_review_info' => '-pri-',
						 'info_id' => '-i-'
						);

So to support my change for the product pages, I changed '-p-' to '.p'.

 

And to support my change for the category pages, I changed '-c-' to 'index.'

 

Then to support my changes in the .htaccess file, I changed the following two lines:

 

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}

To this:

 

RewriteRule ^(.*).p(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)index.(.*).html$ index.php?cPath=$2&%{QUERY_STRING}

 

Now, to change the hyphens ('-') to underscores ('_'), you need to find the strip function in seo.class.php, around line 1309:

 

	function strip($string){
	if ( is_array($this->attributes['SEO_CHAR_CONVERT_SET']) ) $string = strtr($string, $this->attributes['SEO_CHAR_CONVERT_SET']);
	$pattern = $this->attributes['SEO_REMOVE_ALL_SPEC_CHARS'] == 'true'
					?	"([^[:alnum:]])+"
					:	"([[:punct:]])+";
	$anchor = ereg_replace($pattern, '', strtolower($string));
	$pattern = "([[:space:]]|[[:blank:]])+";
	$anchor = ereg_replace($pattern, '-', $anchor);
	return $this->short_name($anchor); // return the short filtered name
} # end function

Change "$anchor = ereg_replace($pattern, '-', $anchor);" to $anchor = ereg_replace($pattern, '_', $anchor);

 

 

Have fun, and Good Luck,

-Skittles

Link to comment
Share on other sites

i really don't know how to do , i use osc from template monster.maybe this is old version of osc.how to update to newer version?does it lose anything? can you tell me which easiest way to remove oscid,i'm newbie

thanks

osclearner,

 

You cannot remove the oscid. It is a necessary function of the cart. oscid stands for osCommerce Session Id. Sessions keep track of the products in the cart, if the visitor is logged in, etc.

 

IF the visitor has cookies enabled, the oscid will be stored in a cookie on their computer, and won't be visible in "most" of the URLs. This is because the first instance of the session id will be appended to the URL, but will be stored in a cookie for subsequent page views.

 

If you are running a test localhost server, like xampp, you will continue to see the session ids.

 

My advice? Stop obsessing over the URLs. :) Most visitors won't even notice the oscid, and with 'Prevent Spider Sessions' set to true in the Admin (under Configuration->Sessions), the search engines shouldn't even create them.

 

And one more thing, once your store goes live, don't make changes to category names, product names, etc. osCommerce will serve the page if the corresponding ID exists in the database. Once the search engine has that page in their index, changing the category or product name can result in what appears to be duplicate pages.

 

I suspect the search engines have smart enough algorithms to 'understand' that ?cPath=3&products_id=15 is the same page as ?products_id=15. But with rewritten urls like SEO URLs creates, it's not as straight forward that the page is created from database content. So hardware-c-15.html and mac-hardware-c-15.html may appear to the search engines to be two different pages. Because the page is served based on the 15, the search engine will get a 200 OK response for either URL.

 

Go back a few pages, and you will find the nightmare one member is having because of old seo urls in the SEs index after changing the directory structure of his site.

 

Anyway, good luck.

-Skittles

Link to comment
Share on other sites

Hi,

 

I was wondering if anyone has gotten this contrib to work with Header Tag Controller?

 

I looked at the pages with lots of changes, and it is beyond WinMerge.

 

Can anyone offer files for download with SEO URLs and HTC installed?

 

e.g. a page like admin/categories.php is a bit overwhelming.

 

Thanks for any tips. (PM me if possible)

Link to comment
Share on other sites

Hi,

 

I was wondering if anyone has gotten this contrib to work with Header Tag Controller?

 

I looked at the pages with lots of changes, and it is beyond WinMerge.

 

Can anyone offer files for download with SEO URLs and HTC installed?

 

e.g. a page like admin/categories.php is a bit overwhelming.

 

Thanks for any tips. (PM me if possible)

mltgroup,

 

I posted a file with those changes on this thread. There's a small mistake in the file, but baka points you right to it in a subsequent post. There are currently only 11 posts in the whole thread, so it's an easy read.

 

So the change that baka points out needs a ");" changed to a ",". Anyway, this should get you up and running.

 

Good luck,

-Skittles

Link to comment
Share on other sites

mltgroup,

 

I posted a file with those changes on this thread. There's a small mistake in the file, but baka points you right to it in a subsequent post. There are currently only 11 posts in the whole thread, so it's an easy read.

 

So the change that baka points out needs a ");" changed to a ",". Anyway, this should get you up and running.

 

Good luck,

-Skittles

 

Thank you Skittles!

 

I hope to try this, but can't seem to download the txt file. It goes to a forum "error" page. Maybe I am not clicking in the right spot?

 

appreciate the help :)

Link to comment
Share on other sites

I'm using v2.1d and my shop was up and running in all 3 default languages and had been spidered by all the search engines. However, to reduce the admin overhead I decided to run it only in english, so I've dropped the spanish and german.

 

However, I'm still getting hits (mainly from the search engines) on URL's such as:

/shop/ambre-solaire-apres-sonnen-150ml-p-95.html

/shop/piz-buin-m-14.html?sort=3a&page=1&language=es

 

Obviously as only the english pages now exist, these URL's are returning a result code of "200 OK" and the content from the english pages.

 

I'm going to end up with one hell of a duplicate content penalty! Anyone know how to return a 301/404 for these URL's?

For anyone else with a similar issue I have found a fix for the first half with an excellent piece of coding from Boxtel back on page 64 at post #1265: Boxtel's Code Just insert this into application_top.php beneath:

// Ultimate SEO URLs v2.1
include_once(DIR_WS_CLASSES . 'seo.class.php');
if ( !is_object($seo_urls) ){
	$seo_urls = new SEO_URL($languages_id);
}

(that was at line 301 for me)

 

Could just do with some help/guidance on the second half now...

Link to comment
Share on other sites

osclearner,

 

Those characters are stored in the configuration table. Theoretically, you could changed the table, but not a that's not a good idea.

 

I helped another member to add a function to the seo.class.php file which converted Cyrillic characters to the Roman Alphabet equivalents. Would something like that work for you?

 

-Skittles

 

skittles,thanks a lot . i'm interested in your function to the seo.class.php . If you have free time to help me. i will send you some special characters for my language!

 

thanks a lot

Link to comment
Share on other sites

Hi everyone, i am having some trouble with my OSC installation.

 

I have followed all the correct steps to install this, i am running this on my own server running IIS 5.1, PHP5, MYSQL, and rewrite rules done by ISAPI Rewrite (they work brilliantly)

 

I have installed this contribution and the URLS are now SEO friendly, everything on the catalog side of things looks to be perfect, however when i got to the administration panel i find nothing in the configuration menu for SEO urls.

 

I have looked in the database and found nothing in 'configuration' that wasnt there before.

I have tried both the 2.1c and 2.1d contributions and all of the fixes for them but still find myself without a menu in the administration panel for some odd reason, i have looked through the forums extensively and found a few posts regarding this but nothing posted has solved my problem.

 

i am just wondering if anyone can please help me...

 

Thanks.

Link to comment
Share on other sites

i am having some trouble with my OSC installation.

 

It seems you are one of the unlucky few who encounter this problem, ie, somehow something preventing seo urls from installing/inserting the configuration records automatically. Take a look at page 90, I posted the sql script that you can import/run in phpMyAdmin manually.

 

Ken

Edited by GemRock

commercial support - unProtected channel, not to be confused with the forum with same name - open to everyone who need some professional help: either PM/email me, or go to my website (URL can be found in my profile).

over 20 years of computer programming experience.

Link to comment
Share on other sites

Problem (bug) In Ultimate SEO version 2.2.1. When choose a manufacturer in the manufactures-dropdown list all is working fine. When choose ‘select’ on top of the dropdown menu I get a 404. The URL Ultimate SEO gives is: mydomain.com/-m-.html

When I disable Ultimate SEO this problem does not occur.

 

Is there a solution for this??

Edited by Hugo77
Link to comment
Share on other sites

skittles,thanks a lot . i'm interested in your function to the seo.class.php . If you have free time to help me. i will send you some special characters for my language!

 

thanks a lot

osclearner,

 

Sending me the characters probably won't work. My text editor turned all the Cyrillic characters to question marks...

 

Here is the code. All you need to do is create the array of characters. It's just an ordinary array, with each character you want to convert as the key and the resulting character(s) as the value. Like this: '@'=>'at'

 

Each key=>value pair needs to be followed by a comma, except for the last one.

 

Okay, find the strip function in seo.class.php, around line 1309, and replace the entire function with the following code:

 

/**
* Function to convert language specific characters to roman alphabet
* @param string $string
* @return string.
*/
function convert_to_roman($string) {
 $convert_chars = array(
/* 
replace this comment with characters in the following format

					 '?'=>'C', '?'=>'B', '?'=>'L', '?'=>'R', '?'=>'P',
					 '?'=>'H', '?'=>'F', '?'=>'A', '?'=>'IO', '?'=>'IU' 

where the '?' represents the language specific character to be
converted and the last key=>value pair does not have a trailing comma.
*/
					);
 $string = strtr($string, $convert_chars);
 return $string;
}

/**
* Function to strip the string of punctuation and white space
* @author Bobby Easland
* @version 1.1
* @param string $string
* @return string Stripped text. Removes all non-alphanumeric characters.
*/
function strip($string){
			$string = $this->convert_to_roman($string);
			if ( is_array($this->attributes['SEO_CHAR_CONVERT_SET']) ) $string = strtr($string, $this->attributes['SEO_CHAR_CONVERT_SET']);
			$pattern = $this->attributes['SEO_REMOVE_ALL_SPEC_CHARS'] == 'true'
											?		"([^[:alnum:]])+"
											:		"([[:punct:]])+";
			$anchor = ereg_replace($pattern, '', strtolower($string));
			$pattern = "([[:space:]]|[[:blank:]])+";
			$anchor = ereg_replace($pattern, '-', $anchor);
			return $this->short_name($anchor); // return the short filtered name
	} # end function

Now create the array of characters and replacements.

 

Because you have a lot of characters to convert, I recommend you break them into lines of five or six characters. Then add the lines one at a time, testing in between each added line.

 

Start with the final line and work your way up, as each line will end with a comma except the last line. A comma after the last pair or just one apostrophe out of place will cause a parse error. And the source of the error can be hard to find when you have tens or hundreds of elements in the array. Testing it line by line will make it relatively quick and easy to find if and when there is an error in that line.

 

Have fun, and good luck,

-Skittles

Link to comment
Share on other sites

It seems you are one of the unlucky few who encounter this problem, ie, somehow something preventing seo urls from installing/inserting the configuration records automatically. Take a look at page 90, I posted the sql script that you can import/run in phpMyAdmin manually.

 

Ken

 

 

Thanks mate, this got the configuration values into my Mysql database... and everything is working... ie.. i can set different options and enable/disable.

 

however it still doesnt show up in the configuration option on admin panel ??

 

Any ideas?

Link to comment
Share on other sites

...however it still doesnt show up in the configuration option on admin panel...

Have you done the last step as mentioned on page 90, ie, insert a record into the configuration_group table?

 

Ken

commercial support - unProtected channel, not to be confused with the forum with same name - open to everyone who need some professional help: either PM/email me, or go to my website (URL can be found in my profile).

over 20 years of computer programming experience.

Link to comment
Share on other sites

Have you done the last step as mentioned on page 90, ie, insert a record into the configuration_group table?

 

Ken

 

if i set configuration_group_id as '1' then it shows up in the main store configuration table on the admin side, anything else and it doesnt work... ie: 6

 

It is my understanding that it should select this extra group from the database attached a name to it and display it separately in the configuration tab on the admin side... seems so simple yet it wont happen for some reason.

 

:blink:

 

Thanks for all your help so far, it is atleast usable at the moment.

Link to comment
Share on other sites

Group id 6 has already been used by the Modules (as default). The group id in the example (page 90) should be 41 if that has been changed in step 1.

The other number in the configuration_group record is 1, which is a switch, and must be 1, meaning visible, and if it is not 1, invisible.

 

Ken

commercial support - unProtected channel, not to be confused with the forum with same name - open to everyone who need some professional help: either PM/email me, or go to my website (URL can be found in my profile).

over 20 years of computer programming experience.

Link to comment
Share on other sites

Skittles

thanks a lot.i have done the strip function in seo.class.php as your instruction.it converts well :))

but there are some product links

http://localhost/shop/-productname-productname--p-1531.html?osCsid=c5849f13b733c5604d936d2c02af00c0

 

instead of

http://localhost/shop/productname-productname-p-1531.html?osCsid=c5849f13b733c5604d936d2c02af00c0

can you tell me how to solve?

thanks a lot

Edited by osclearner
Link to comment
Share on other sites

Skittles

thanks a lot.i have done the strip function in seo.class.php as your instruction.it converts well :))

but there are some product links

http://localhost/shop/-productname-productname--p-1531.html?osCsid=c5849f13b733c5604d936d2c02af00c0

 

instead of

http://localhost/shop/productname-productname-p-1531.html?osCsid=c5849f13b733c5604d936d2c02af00c0

can you tell me how to solve?

thanks a lot

osclearner,

 

The strip function replaces all spaces and blanks with the character '-':

 

				$pattern = "([[:space:]]|[[:blank:]])+";
			$anchor = ereg_replace($pattern, '-', $anchor);

If your conversion somehow introduced a space at the beginning and end of the string, strip() would convert them to '-'.

 

Try using the trim function and see if the extra hyphens go away. Change this:

 

				$anchor = ereg_replace($pattern, '', strtolower($string));

To this:

 

				$anchor = ereg_replace($pattern, '', trim(strtolower($string)));

 

Let us know if that solves it.

 

-Skittles

Link to comment
Share on other sites

Skittles.

yes,it works like a charm ^^.thankyou

i find a tip to remove oscid here

http://oscommerce-chemo.blogspot.com/2006/...ended-urls.html

is it the solution?

 

thanks

osclearner,

 

What a wonderful find! I sure miss Chemo on the forum.

 

Just so everyone is clear, that blog post contains code you put into application_top.php that will force the search engines to update their indexes with the correct url. It will remove the session id's from the urls in the search engines' indexes. It will not remove the session id's from the urls on your web site.

 

BUT you shouldn't need this code, because you can prevent the search engines from indexing the url with the session id in the first place...

 

Open your Admin and go to Configuration. In the left menu, locate and click on 'Sessions'. Find the option to 'Prevent Spider Sessions' and set it to 'True'.

 

Now, forget about session id's appended to the url. It's a moot point. ;)

 

Cheers,

-Skittles

Link to comment
Share on other sites

Skittles

how to convert "-" to "_" ? which one is better? i'm very newbie with seo and google, and i really want to learn how to promote my website?after installing Ultimate SEO,do i finish? or what should i continue to do?

 

cheers

Link to comment
Share on other sites

Skittles

how to convert "-" to "_" ? which one is better? i'm very newbie with seo and google, and i really want to learn how to promote my website?after installing Ultimate SEO,do i finish? or what should i continue to do?

 

cheers

 

 

doing a google search will give you some more info on this...but to save you some time the general consesus is that - is better than _

Link to comment
Share on other sites

Hi

 

Just install fast easy checkout on top of Ultimate SEO URLs with SSL turned on.

But every time I try and checkout the site kicks me back to the logon page.

 

If I turn SSL off all works fine.

Same if I turn SEO of all works fine.

 

Has any one else had this problem, if so how was it fixed.

 

Thanks if you can help.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...