Welcome to WebmasterWorld Guest from 54.162.240.235

Forum Moderators: Ocean10000 & incrediBILL & phranque

Message Too Old, No Replies

htaccess wrong code ?

something strange

     
3:01 pm on Nov 15, 2010 (gmt 0)

10+ Year Member



hello guys,
is this code correct?
-----------------------------

Options +FollowSymLinks -MultiViews
RewriteEngine on
#
RewriteRule ^http://www.sample.com/folio.html/ [sample.com...] [R=301,L]

RewriteRule ^http://www.sample.com/Residential.html/ [sample.com...] [R=301,L]

------------------------------


but this code doesn't work, where is a mistake?
3:12 pm on Nov 15, 2010 (gmt 0)

10+ Year Member



Noximus --

The first parameter of the RewriteRule contains only the path info, not the fully qualified domain name.

If your RewriteRule is in the server configuration or a VirtualHost configuration, then the path will start with a /. If it is in a .htaccess file (more common, less desirable if you have the choice between the two) then the path will not start with the /. In the latter case, you'll also have to set RewriteBase.

Here's code for a server-base/virtual host context:


Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteRule ^/folio.html$ http://www.sample.com/Showcase.htm [R=301,L]
RewriteRule ^/Residential.html$ http://www.sample.com/Stones.htm [R=301,L]


In a .htaccess context it would be



Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

RewriteRule ^folio.html$ http://www.sample.com/Showcase.htm [R=301,L]
RewriteRule ^Residential.html$ http://www.sample.com/Stones.htm [R=301,L]



The ^ means "starts with" -- a good practice to get into (you might, for example have a "Portfolio.html" page, which would also match :-). $ means "ends with".

Tom
4:17 pm on Nov 15, 2010 (gmt 0)

10+ Year Member



Tom,
Thank you very much, you helped me a lot.

good luck online and offline.
3:22 pm on Nov 16, 2010 (gmt 0)

WebmasterWorld Senior Member jdmorgan is a WebmasterWorld Top Contributor of All Time 10+ Year Member



Note that literal spaces in the regular-expressions patterns should be escaped to avoid ambiguity.

In a server config file, outside of any <Directory> sections:

Options +FollowSymLinks -MultiViews
RewriteEngine on
#
RewriteRule ^/folio\.html$ http://www.example.com/Showcase.htm [R=301,L]
RewriteRule ^/Residential\.html$ http://www.example.com/Stones.htm [R=301,L]

- or -
In a .htaccess file, or within a <Directory> section in a server config file:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /
#
RewriteRule ^folio\.html$ http://www.example.com/Showcase.htm [R=301,L]
RewriteRule ^Residential\.html$ http://www.example.com/Stones.htm [R=301,L]

It is also generally recommended that all URLs be specified as all-lowercase, to make URL canonicalization possible without having to resort to scripted solutions or to solutions which require CPU-intensive 'file-exists' checks.

Yes, mixed-case URLs can "look more attractive," but can lead to *major* headaches if people link to mis-cased URLs; If the correct URLs are always all-lowercase, this problem can be easily fixed simply by rewriting the mis-cased URL requests to all-lowercase. If the correct URLs are mixed-case, then the filesystem must first be searched to determine the correct casing, which is expensive in terms of server performance, and may be almost impossible without using a scripted approach to determine the 'most likely correctly-cased URL.' Certain combinations of URL-rewriting and mixed-case URL usage may in fact make this impossible to do, leading to lost business opportunity due to the visitors receiving 404-Not Found errors from mis-cased links.

Jim
3:37 pm on Nov 16, 2010 (gmt 0)

10+ Year Member



To clarify Jim's comment, I failed to properly escape the . in the filename -- without being escaped the . means "a character". This character could be anything, and is probably a "." but could be a space, or any other character.

I strongly agree with Jim's advice to make URIs lowercase. The HTTP spec allows to domains to (www.example.com) to be delivered in any case, so any matching on domains should use the [NC] flag, however the path part of a URL is case sensitive. To avoid confusion, go with lower-case.
3:54 pm on Nov 16, 2010 (gmt 0)

10+ Year Member



Thank you very much Jim.
 

Featured Threads

Hot Threads This Week

Hot Threads This Month