Welcome to WebmasterWorld Guest from 54.160.221.82

Forum Moderators: Ocean10000 & incrediBILL & phranque

Message Too Old, No Replies

Can't Get RewriteRule to Rewrite

Using . as a separator

     
5:13 pm on Jun 25, 2008 (gmt 0)

Senior Member

WebmasterWorld Senior Member 10+ Year Member

joined:July 31, 2003
posts:668
votes: 0


I'm trying to create a more manageable URL for people. The dynamic URL would be in the form of:

http://www.example.com/index.php?name=Firstname.Lastname

The "easy" URL I want is:

http://www.example.com/Firstname.Lastname

Here is what I've tried:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^/([a-z]+)\.([a-z]+)$ http://www.example.com/index.php?name=$1.$2 [NC]
RewriteRule ^/(.*)\.(.*)$ http://www.example.com/index.php?name=$1.$2 [NC]
RewriteRule ^/([^/]+)\.([^/]+)$ http://www.example.com/index.php?name=$1.$2 [NC]

RewriteRule ^/([a-z]+)\.([a-z]+)$ /index.php?name=$1.$2 [NC]
RewriteRule ^/(.*)\.(.*)$ /index.php?name=$1.$2 [NC]
RewriteRule ^/([^/]+)\.([^/]+)$ /index.php?name=$1.$2 [NC]

None of these have worked. Is it not possible to use the . as a separator? I've seen other sites doing it, but maybe they're not doing it with htaccess.

[edited by: jdMorgan at 5:41 pm (utc) on June 25, 2008]
[edit reason] example.com [/edit]

5:56 pm on June 25, 2008 (gmt 0)

Senior Member

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

joined:Mar 31, 2002
posts:25430
votes: 0


Your fourth rule is correct for the stated purpose if the code is located in httpd.conf or conf.d.

If this code is for .htaccess, be aware that the path to the current .htaccess directory is always stripped from the URL-path examined by RewriteRule -- i.e. the path is "localized" to the .htaccess file's directory. So, if this is the case, you'll need to remove the leading slash from the RewriteRule pattern.

Using "." as a separator will work, as long as no RewriteRules are looking for the "." and treating what follows as a filetype, and as long as you don't have MultiViews (content negotiation) enabled, which would also treat the periods as filetype separators. (For this application, I would suggest using a hyphen or an underscore, just to 'future-proof' your URLs in case you do someday want to use either of these techniques.)

If you still wish to use a period as a separator, then you will also need to explicitly prevent the rewritten request for "index.php?name=firstname.lastname" from being subsequently rewritten to /index.php?name=index.php repeatedly -- in an 'infinite' rewrite loop. Typically, you could do this by adding a RewriteCond.

In example.com/.htaccess:


RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule ^([a-z]+)\.([a-z]+)$ /index.php?name=$1.$2 [NC]

Note that the leading slash *will* be present on the URL-path in REQUEST_URI in either httpd.conf, conf.d, or .htaccess, so don't remove it as a result of my comments pertaining to RewriteRule above.

Jim

 

Join The Conversation

Moderators and Top Contributors

Hot Threads This Week

Featured Threads

Free SEO Tools

Hire Expert Members