Urls rewriting "how to" with .htaccess
-
hi,
Please i would need advices (links, tips, tool:generator ?) regarding url rewriting through .htaccess (newbee about it).
It's a "refurbishing" website case , the domain doesn't change. But the CMS does !
I've got a list of urls (800) with which i don't want to loose rankings on :
Here the type of old url syntax :
http://www.mydomain.com/home/newscontent.asp?id=1133
Here the new url type would be:
http://www.mydomain.com/name-of-the-article
or/and
http://www.mydomain.com/category/Page-2Tks a lot...
-
You should get all the url of the old site with Xenu's Link Sleuth, then create a PHP array of oldUrl => newUrl and put it in your redirect script.
So you have in the htaccess :
RewriteCond %{REQUEST_URI} ^/home/newscontent.asp
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(.*)$ redirect.php?id=%1 [L]In the redirect.php file, you have :
$redirect = array("/home/newscontent.asp?id=1133" => "/name-of-the-article"); // 800 times (for all url)
if(isset($redirect[$_SERVER['REQUEST_URI']])) {
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.mydomain.com/".$redirect[$_SERVER['REQUEST_URI']]);
exit();
}// Send a 404 if you don't have a redirect
-
Hi, i was thinking of the whole picture of baptiste solution, you say :
"Baptiste: On the new linux hosting set up an .htaccess file in the root of the site directory that redirects all id=xxxx requests to a redirect.php file on your server. The redirect.php file will need to interrogate a database with a table of the mappings and automatically redirect to the correct page via php scripting."
it means that wiithout any credentials, any database access, if you have urls from the site you need to move to, you can redirect any urls site to another one !?
Hum..i think i miss something ..
-
Good idea..i'll to make it so , and use excel function.....tks
-
Many tks for all these explanations..
So, in fact, lazily speaking, i would say that the .htaccess file solution give less work to do (no redirection script) and seems to be quite easy to make (excepting syntax inside .htaccess), so i 'll go for Damien's ..but i need credentials to install it.
Otherwise, if i don't, I'd go for Baptiste's...
Tks a lot...
-
As you have only 800 urls, I agree with Damien, you should generate an associative array in pure php, associating every ID with the new url.
The redirect script will only test if the ID is an array key, if it is you 301 to the new url. Otherwise, display a 404 page.
-
OK in that case it simplifies things a bit.
In order to do any redirection from id=1136 to unique-article-name you will haveto create the mappings entirely manually.
The two solutions provided are:
Baptiste: On the new linux hosting set up an .htaccess file in the root of the site directory that redirects all id=xxxx requests to a redirect.php file on your server. The redirect.php file will need to interrogate a database with a table of the mappings and automatically redirect to the correct page via php scripting.Mine: essentially the same as Baptiste's proposal, except that you don't interrogate the database, all the redirections are done using the htaccess file which contains all the mappings.
Either way you will need to manually create the mappings yourself, either in the database or in the htaccess file.
EDIT: Just had a thought, are the page titles of the articles the same between the new site and the old? If they are then you could crawl both sites with Xenu and then use vlookups in excel (or similar) to semi-automatically create your mapping of id = unique-article-name.
-
I'd say yes for the first one and for sure no for the second one...:)
-
To be honest, this is the solution I'd go for.
Mozollo, was your old site database driven?
Are you using the old article titles as the new page names?
If the answer is no to either of these, then the end result is you will have to manual map id to page name for each of the 800 pages you want to keep.
-
Tks again, so (sorry to repeat)
-
your solution : 1 .htaccess + redirect.php : located at the root of windows platform
-
Damien's : 1 .htaccess :located at the root of windows platform
Is that correct ?
-
-
1. .htaccess won't exist on the windows platform unless you installed a rewrite mod on the windows server. If you did then the .htaccesswill be in the root folder of the website (usually) you should check the documentation of the rewrite mod to confirm that.
2. If you have a windows PC then Xenu's Link Sleuth should be able to crawl the old site, you can then extract the information from the files that xenu can export.
3/4. If every unique id needs to get mapped to a unique url then yes, 800 times it is. If you have multiple ids that go to the same page you could do:
RewriteCond %{QUERY_STRING} ^id=113[3-8]$ [NC]
RewriteRule ^newscontent.asp$ ^name-of-the-article$ [L,R=301]
All ids from 1133 to 1138 will now redirect to the same page, you'll have to work out the regexs though.
-
To be clear about the different roles of the files in my solution, the .htaccess file will redirect every old url (whatever the id is) to a redirect script written in php.
This script will get the old url Id, load the article (to get the article name) and then redirect 301 to the new url. Only in php can you access the database.
Damien gave another solution, only based on htaccess. You have to write (or generate with code / software) 800 redirect directive for the htaccess file.
-
Tks to you both Baptiste placé Damiens Phillips and.
What do you mean when you say :
"The redirect.php file will load the article (or category as I understood) and do a 301 to the new url."
Is it en .htaccess file to create or a dedicated file.php , or both (redirect.php) ?
Yes, i'll all have to transfer each old article and i'll give them an unique urls per article..hope that reply your question !
-
Can you be a bit more precise about the new url ? Does every old article with id has to 301 to a page with a unique name ?
-
Hi,
Tks to you both Damiens Phillips and Baptiste placé.
But it seems to be a bit confusing for me for 2 reasons : language + technical knowledge !
I confirm that i'll move from windows platform to linux one.So if i understand :
1/ - htaccess is possible but where will it be located ? I assume at the root of the old platform (windows here..).
2/ - I'll have to crawl each article in order to get each id (by the way, have you got any crawler tool to advise ?)
3/ - For each of these urls i'll have to write such syntax :
RewriteCond %{QUERY_STRING} ^id=1133$ [NC]
RewriteRule ^newscontent.asp$ ^name-of-the-article$ [L,R=301]4/ ...800 times ? Or is there a way to tell on 1 line like :
RewriteCond %{QUERY_STRING} ^id=1133$ + ^id=1134$ + ^id=1197$ ...... [NC]Tks a lot again
-
I'll return the favour if it turns out he has moved from IIS
-
That's right but htaccess was asked. Thumbed up your answer so it goes first
-
But only if he's moved from Windows IIS hosting to Linux or Windows + PHP!
-
True ! The good syntax is :
RewriteCond %{REQUEST_URI} ^/home/newscontent.asp
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(.*)$ redirect.php?id=%1 [L] -
He'll need to add [L,R=301] at the end instead of just [L]. IIRC default behaviour is a 302 redirect.
You also can't reference a querystring in the RewriteRule, you have to use RewriteCond.
-
Hi,
From the .asp in the sample URLs I'm guessing you're hosted on Windows, if that's the case you'll need to get a rewrite mod for IIS such as ISAPI Rewrite 3. We've been using it for about 5 years now and it performs well. Their site has documentation that shows how it works.
You'll need to learn about regex expressions and a tool like Regex Buddy might be helpful.
I'm not aware of an tools that can automate generation, and I think that in your case you're going to need to do some manual work to set it up.
First you'll need a way of linking the old URLs to the new ones. Given the information you've provided, it's not clear how you'll be able to do this, so I'll make an assumption.
Assuming that name-of-the-article is the same as the title of newscontent.asp?id=1133, you'll need to generate a list, in excel for example, that lists the old contentid and the title of that document. You can then use formulae/macros to generate the rewrite rules which you would enter in the .htaccess file.
If you don't have a record of the id = title relationship in your old cms database (assumption!) then you might be able to do it by crawling the old site with a crawling program, exporting the data and then manipulating it. Otherwise you'll have to do it all by hand.
Rewrite rules generally take the form:
RewriteRule oldpageaddress newpageaddress [flags]
You'll also need to use the RewriteCond in order to base the rule on the querystring.
So for your example;
RewriteCond %{QUERY_STRING} ^id=1133$ [NC]
RewriteRule ^newscontent.asp$ ^name-of-the-article$ [L,R=301]
You'd then need to repeat those two statements for each page you want to redirect.
-
Hi mozllo,
You won't be able to create a .htaccess for such urls, because the original url only has the ID of the article and you want the name of the article in the new url. This requires database access to know the new url.
I would suggest to put in your htaccess file :
RewriteRule ^home/newscotnent.asp?id=([0-9]+) redirect.php?id=$1 [L]
Edit : see good rule below
The redirect.php file will load the article (or category as I understood) and do a 301 to the new url.
Got a burning SEO question?
Subscribe to Moz Pro to gain full access to Q&A, answer questions, and ask your own.
Browse Questions
Explore more categories
-
Moz Tools
Chat with the community about the Moz tools.
-
SEO Tactics
Discuss the SEO process with fellow marketers
-
Community
Discuss industry events, jobs, and news!
-
Digital Marketing
Chat about tactics outside of SEO
-
Research & Trends
Dive into research and trends in the search industry.
-
Support
Connect on product support and feature requests.
Related Questions
-
How do I set a link as a "do follow"?
I have a page from a state agency linking to my website. They have good PA and DA. How do I tell google to "do follow"? It is already showing up as linked to my site, I just want to make sure I'm getting the SEO juice! 🙂
Link Building | | Kuhliff0 -
Does anyone know if it is possible to get a "dofolow" link from YouTube? All advice currently available seems a bit outdated,
I see that some competitors have links from youtube but i can not see ay advice on how to get do follow links from Youtube - is this possible and if so can anyone advise how? The only advice i can see is a little dated,
Link Building | | SimonButterworth0 -
Reversing Canonical URLs?
A few months back, we set up canonical URLs on some pages with duplicate content to give some newer pages more link juice. Now, we need to do the opposite and give that same juice to some of the original pages. If we set up canonical URLs on the newer pages to point back to the original pages, are we losing the juice we've been building all along? Sorry for all this convoluted juice talk. Hopefully, my point is getting across here.
Link Building | | frankmassanova0 -
Can I include "commissioned" posts in my link building strategy?
Ok "Commissioned Posts" meaning industry influencers/bloggers etc writing about your brand, products or services and possibly "linking" to your website (in exchange for money, or not) a) I'm contacted by a blogger who wants to write a piece about our product and naturally links back. b) A blogger says, yes, we can write a fantastic article about your brand and link to you for $$$..$ - is this ok if not at scale? What is deemed as ethical? I want to make sure our link building campaign is done within Google's guidelines. Here is currently what we are doing, or intending to do; 1. We're producing unique content on our site and sharing this with key influencers organically on Twitter, Facebook and G+ communities. This so far is working well for a new start up. 2. Writing guest posts on authoritative sites (with only our author bio at the bottom, branded link to our site, social links) sharing knowledge or interesting content which readers will want to read. Sites like HuffPost, The Guardian would be great although we're starting on authoritative well maintained blogger sites within the industry to begin. 3. Reaching out to industry influencers who may like to review our products. Many of them have got back to me stating that they "can" run commissioned posts (normally requires a large fee) which carries a followed link, branded or unbranded. Although we may have initially contacted them, and money could be exchanged, in the eyes of Google wouldn't this appear as a natural post? Please let me know your thoughts on this? It would be great to gain more of an understanding exactly what I can or cannot do when it comes to developing high quality links for our business! Your feedback (sharing any examples if possible) would be truly appreciated. Thanks Gary
Link Building | | GaryVictory0 -
Keyword Domain URL structure
Hello all, We have a domain with one of the primary keyword within the domain itself (audisite) and reading through some of the topics, having a keyword within the domain itself seems to be not as significant as we had assumed. We currently have a URL strucuture ( http://audisite.co.uk/new-audi/a4 ) which we were thinking of modifying to something like audisite.co.uk/a4 based on the premise that the 'audi' keyword is already in the domain itself. Also in terms of URL optimization, which of these will be the most effective URL (if the content is exactly the same). Or is my whole approach incorrect to URL optimization fundamentally incorrect? /a4 /new-audi-a4 /new/audi-a4 /new-audi/a4 /new/audi/a4 I will be very grateful for any advice/suggestions/pointers. Thank you very much for your time.
Link Building | | nirpan0 -
Are moderated external links in a "showcase" worth having?
We have some e-commerce software with several dozen websites that use our technology. The websites have links to the developer and design shops that made the site as well as the site itself. All of these sites are moderated so we don't have to worry about spam. My question is should some or all of these links be rel=nofollow? The links are definitely pointing to legit development shops but those sites aren't always strictly related to e-commerce or the keywords we're trying to rank for. Any thoughts on how to treat these links?
Link Building | | schof0 -
Guest blogging on a "network" of sites. Good or BAD?
Hi guys! We have the opportunity to guest blog on a network of sites. Basically, this is a syndicated network of sports blogs (around 200) that all link to each other. They own and operate a blog for each major sports franchise. They each average a DA around 60, but almost all of their link equity comes from blogs they own and operate.... My question is this, should we take the opportunity to create editorial content with links back to our site. This would not be paid side or footer links, but real content relevant to their blog and our industry. On a side note; All of these site have a very decent DA and show up well in Google... Thanks for any advice!!!
Link Building | | brettcohen0 -
Marketing URLs - best practices
Hi, We do have a consistent url structure like http://www.company.com/productname-london
Link Building | | ecnic
http://www.company.com/productname-auckland
etc. Now marketing wants to include each URL in our yearly printed catalogue.
Out of marketing reasons (I agree with that), they think the URLs are too long and should be for example: http://www.company/london
http://www.company/auckland
etc. Our brochure is very important for direct customers and we have a target group that actively uses the internet and social media and therefore will pick up these links. Even if we do correct redirects in the background - couldn't we have the problem
that we have a double set of urls? What do you think about that?0