Forum Moderators: phranque

Message Too Old, No Replies

.htaccess incorrect?

         

Jez123

2:47 pm on Jun 21, 2012 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



Hi,

It's a long story but I need some advice on my .htaccess. Google has indexed instances of url/ and url without /

This is the code I have, redirecting old html pages and folders to a wordpress installation:

#redirects from old site

redirect 301 /pet-memorial-index.htm http://www.example.com/pet-memorial/

redirect 301 /welsh-slate.htm http://www.example.com/

redirect 301 /memorial.htm http://www.example.com/memorials/

redirect 301 /wedding-gift.htm http://www.example.com/gifts/wedding-gifts/

redirect 301 /testimonials.htm http://www.example.com/about-us/testimonials/

redirect 301 /terms-conditions.htm http://www.example.com/about-us/terms-and-conditions/

redirect 301 /spotlights.htm http://www.example.com/

redirect 301 /solid-stone-house-sign.htm http://www.example.com/

redirect 301 /solid-rock-house-sign.htm http://www.example.com/

redirect 301 /solar-powered-house-signs.htm http://www.example.com/

redirect 301 /solar-powered-house-sign.htm http://www.example.com/

redirect 301 /solar-powered-house-plaque.htm http://www.example.com/

redirect 301 /solar-powered-house-number.htm http://www.example.com/

redirect 301 /solar-house-sign.htm http://www.example.com/

redirect 301 /smooth-edged-house-plaques.htm http://www.example.com/house-signs/regular-edged-plaques/

redirect 301 /slate-quarry.htm http://www.example.com/

redirect 301 /slate-quarry-view3.htm http://www.example.com/

redirect 301 /slate-quarry-view2.htm http://www.example.com/

redirect 301 /slate-quarry-view.htm http://www.example.com/

redirect 301 /slate-memorial-stone.htm http://www.example.com/stone-memorials/upright-slate-memorials/

redirect 301 /site-map.htm http://www.example.com/about-us/blog-sitemap

redirect 301 /shopping-house-&-garden.htm http://www.example.com/

redirect 301 /shopping-home-improvements.htm http://www.example.com/

redirect 301 /shopping-hand-made-rugs.htm http://www.example.com/

redirect 301 /shopping-gifts-&-presents.htm http://www.example.com/

redirect 301 /shopping-directories.htm http://www.example.com/

redirect 301 /search-engines-directories.htm http://www.example.com/

redirect 301 /rustic-stone-privacy-policy.htm http://www.example.com/about-us/privacy-policy/

redirect 301 /rustic-slate-house-sign.htm http://www.example.com/house-signs/freestanding/

redirect 301 /rustic-slate-house-plaque.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /resources.htm http://www.example.com/

redirect 301 /pricing.htm http://www.example.com/sign-design-purchase/

redirect 301 /pets-pet-supplies.htm http://www.example.com/

redirect 301 /pet-memorial-index.htm http://www.example.com/pet-memorials/

redirect 301 /personalized-wedding-gift.htm http://www.example.com/gifts/wedding-gifts/

redirect 301 /personalized-house-signs.htm http://www.example.com/

redirect 301 /personalised-gift.htm http://www.example.com/gifts/

redirect 301 /ordering.htm http://www.example.com/sign-design-purchase/

redirect 301 /morepics2.htm http://www.example.com/

redirect 301 /malthouse.htm http://www.example.com/house-signs/freestanding/

redirect 301 /lychgate.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /internet-directories.htm http://www.example.com/

redirect 301 /innovations-innovative-ideas.htm http://www.example.com/

redirect 301 /house-signs.htm http://www.example.com/

redirect 301 /house-signs-diary-1.htm http://www.example.com/

redirect 301 /house-sign-8.htm http://www.example.com/

redirect 301 /house-sign-7.htm http://www.example.com/

redirect 301 /house-sign-6.htm http://www.example.com/

redirect 301 /house-sign-5.htm http://www.example.com/

redirect 301 /house-sign-4.htm http://www.example.com/

redirect 301 /house-sign-3.htm http://www.example.com/

redirect 301 /house-sign-2.htm http://www.example.com/

redirect 301 /house-sign-1.htm http://www.example.com/

redirect 301 /house-plaques.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-plaques-6.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-plaques-5.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-plaques-4.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-plaques-3.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-plaques-2.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-plaques-1.htm http://www.example.com/house-signs/rustic-house-plaques/

redirect 301 /house-number-sign-badger3.htm http://www.example.com/

redirect 301 /house-address-signs.htm http://www.example.com/

redirect 301 /house-&-garden-outbuildings.htm http://www.example.com/

redirect 301 /house-&-garden-house-signs.htm http://www.example.com/

redirect 301 /house-&-garden-gifts-&-presents.htm http://www.example.com/

redirect 301 /house-&-garden-directories.htm http://www.example.com/

redirect 301 /house-&-garden-accessories.htm http://www.example.com/

redirect 301 /hangingsigns.htm http://www.example.com/house-signs/hanging-house-signs/

redirect 301 /grove.htm http://www.example.com/

redirect 301 /gifts-handmade-soap.htm http://www.example.com/

redirect 301 /gifts-gifts-&-presents.htm http://www.example.com/gifts/

redirect 301 /gift-idea.htm http://www.example.com/gifts/

redirect 301 /freebies-fonts.htm http://www.example.com/

redirect 301 /forums-stone.htm http://www.example.com/

redirect 301 /estuary_heights.htm http://www.example.com/

redirect 301 /elmsdown.htm http://www.example.com/

redirect 301 /doorstepsigns.htm http://www.example.com/

redirect 301 /creeds.htm http://www.example.com/

redirect 301 /contact-thanks.htm http://www.example.com/

redirect 301 /christening-gift.htm http://www.example.com/

redirect 301 /christening-gift-stone.htm http://www.example.com/gifts/

redirect 301 /childrens-gift-idea.htm http://www.example.com/gifts/

redirect 301 /cheeseboard.htm http://www.example.com/gifts/

redirect 301 /capelgrange.htm http://www.example.com/

redirect 301 /caminopark.htm http://www.example.com/

redirect 301 /business-window-film.htm http://www.example.com/

redirect 301 /business-print-&-design.htm http://www.example.com/

redirect 301 /business-holding-companies.htm http://www.example.com/

redirect 301 /blue-house-sign.htm http://www.example.com/

redirect 301 /birthday-gift.htm http://www.example.com/gifts/

redirect 301 /automotive-car-sales.htm http://www.example.com/

redirect 301 /automotive-abroad.htm http://www.example.com/

redirect 301 /10Allison.htm http://www.example.com/

redirect 301 /site-map3.xml http://www.example.com/about-us/blog-sitemap/

redirect 301 /contact.php http://www.example.com/contact-us/

redirect 301 /blog/ /about-us/blog/



RedirectMatch 301 ^/pet-memorials(.*) http://www.example.com/pet-memorial/

RedirectMatch 301 ^/stone-memorials(.*) http://www.example.com/memorials/

RedirectMatch 301 ^/stone-flooring(.*) http://www.example.com

RedirectMatch 301 ^/stone-fireplace(.*) http://www.example.com

RedirectMatch 301 ^/lawn-mowers(.*) http://www.example.com

RedirectMatch 301 ^/garden-sheds(.*) http://www.example.com

RedirectMatch 301 ^/garden-furniture(.*) http://www.example.com

RedirectMatch 301 ^/opening-plaques(.*) http://www.example.com/commemorative-plaques/

RedirectMatch 301 ^/commemorative/(.*) http://www.example.com/commemorative-plaques/



# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>



# END WordPress


If I go to WMT and feth a page/ and then click "success" it's fine

If I do the same with page without / and click "success" it gives me:

The page seems to redirect to itself. This may result in an infinite redirect loop. Please check the Help Center article about redirects.

I am unsure what it is supposed to respond with but now certain that is not right.

someone else on here said that (.*) is not good to use either.

I am totally lost with this. This is what I posted in another area here which hopefully explains the situation that I am in better.

[webmasterworld.com ]

lucy24

5:42 pm on Jun 21, 2012 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



<IfModule mod_rewrite.c>

Now, the chances of someone having an Apache-based site without mod_rewrite (introduced in Apache 1.3) are something on the order of ... well, let's say "approaching zero". Especially since WP basically can't function without it.

So your first step is simply to dump this envelope and any others like it. Not its contents, just the envelope. You either have the module or you don't, and your htaccess will be written accordingly.

Second step is to dump all your existing Redirects, which use mod_alias, and translate them into mod_rewrite. If you have a text editor that speaks RegEx this can be done in a couple of quick passes on a COPY of the file using something like this:

# meta-RegEx:
# change . to \.
# ^(Redirect \d\d\d \S+?[^\\])\. TO $1\\.
# now change Redirect to Rewrite
# ^Redirect(?:Match)? 301 /(.+) TO RewriteRule $1 [R=301,L]
# and
# ^Redirect(?:Match)? 410 /(.+) TO RewriteRule $1 - [G,L]

You would of course never use (.+) in a real Rewrite on your server, where nanoseconds count. Or rather: you wouldn't use it in non-final position. At the end of a capture it's fine, because you're allowing the Regular Expression to do what it does naturally: gobble as much as it can, stopping only when it runs out.

RedirectMatch is a close parallel to mod_rewrite, so let's look at a random pair.

RedirectMatch 301 ^/opening-plaques(.*) http://www.example.com/commemorative-plaques/

RedirectMatch 301 ^/commemorative/(.*) http://www.example.com/commemorative-plaques/


Are you capturing leftover text simply to prevent it from being reused? This is necessary in mod_alias because it reappends the rest of the URL. In mod_rewrite you can leave it out. Either way, you've got two rules where you only need one:

^(opening-plaques|commemorative)/(.*)

(Don't remember offhand if mod_alias requires the leading slash, but in mod_rewrite in htaccess you leave it out.) Your current list of rules goes on for miles. Anything that redirects to the same file can be put into a single pipe-separated group.

But make sure you are only picking up requests for pages. If you have images or css living in, say, the /commemorative/ directory, you'll have to make sure the rule doesn't pick those up too. Look at any random bit of your raw logs. Notice how only about a tenth of the requests are for actual pages. All the other stuff is requested by the browser on the user's behalf, and it passes through all the same config files and all your layers of htaccess.

If I do the same with page without / and click "success" it gives me:

The page seems to redirect to itself. This may result in an infinite redirect loop. Please check the Help Center article about redirects.

I am tempted to say "Oh, who knows what WP is on about?" Presumably you checked the article and it had nothing helpful to say. I'm inclined to think they don't really mean redirect, they mean rewrite. ("Internal redirect.") If something of the kind happened in real life-- that is, outside of WP-- you'd have a structure like

RewriteCond %{THE_REQUEST} somestuff
RewriteRule somestuff http://www.example.com/otherstuff [R=301,L]

AND

RewriteRule otherstuff /somestuff.php [L]

That is, you prevent an infinite loop by redirecting original requests only. But if the rules are carefully written and put in the right order, the RewriteCond is only for insurance: anything resulting from an internal rewrite should really never show its face in mod_rewrite again.