.htaccess tips Part 2: How to rewrite advanced url's on apache
I have test all this. Use absolute paths for everything, example:
Some quick stuff:
([a-z]+) - just small letters
([A-Z]+) - just big letters
([0-9]+) - just numbers
([a-zA-Z_-]+) - small and big letters and minus (-)
([a-zA-Z0-9_-]+) - small and big letters, numbers and minus (-)
(.*) - everything - warning!!!! don't ever use - this have to much permissions
Example 1.
www.domain.com/index.php?category=search-engine-optimization
1. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?category=$1 [R=301,L]
results: www.domain.com/search-engine-optimization
2. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)$ index.php?category=$1 [R=301,L]
results: www.domain.com/category/search-engine-optimization
3. solution
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+).html$ index.php?category=$1 [R=301,L]
results: www.domain.com/search-engine-optimization.html
4. solution
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+).html$ index.php?category=$1 [R=301,L]
results: www.domain.com/category/search-engine-optimization.html
5. solution
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/$ index.php?category=$1 [R=301,L]
results: www.domain.com/category/search-engine-optimization/
Example 2.
www.domain.com/index.php?category=internet&subcategory=search-engine-optimization
1. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?category=$1&subcategory=$2 [R=301,L]
results: www.domain.com/internet/search-engine-optimization
2. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/subcategory/([a-zA-Z0-9_-]+)$ index.php?category=$1&subcategory=$2 [R=301,L]
results: www.domain.com/category/internet/subcategory/search-engine-optimization
3. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ index.php?category=$1&subcategory=$2 [R=301,L]
results: www.domain.com/internet/search-engine-optimization.html
4. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/subcategory/([a-zA-Z0-9_-]+).html$ index.php?category=$1&subcategory=$2 [R=301,L]
results: www.domain.com/category/internet/subcategory/search-engine-optimization.html
5. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/subcategory/([a-zA-Z0-9_-]+)/$ index.php?category=$1&subcategory=$2 [R=301,L]
results: www.domain.com/category/internet/subcategory/search-engine-optimization/
Example 3.
www.domain.com/index.php?category=internet&subcategory=search-engine-optimization&more=articles
1. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?category=$1&subcategory=$2&more=$3 [R=301,L]
results: www.domain.com/internet/search-engine-optimization/articles
2. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/subcategory/([a-zA-Z0-9_-]+)/more/([a-zA-Z0-9_-]+)$ index.php?category=$1&subcategory=$2&more=$3 [R=301,L]
results: www.domain.com/category/internet/subcategory/search-engine-optimization/more/articles
3. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ index.php?category=$1&subcategory=$2&more=$3 [R=301,L]
results: www.domain.com/internet/search-engine-optimization/articles.html
4. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/subcategory/([a-zA-Z0-9_-]+)/more/([a-zA-Z0-9_-]+).html$ index.php?category=$1&subcategory=$2&more=$3 [R=301,L]
results: www.domain.com/category/internet/subcategory/search-engine-optimization/more/articles.html
5. solution:
Code:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^category/([a-zA-Z0-9_-]+)/subcategory/([a-zA-Z0-9_-]+)/more/([a-zA-Z0-9_-]+)/$ index.php?category=$1&subcategory=$2&more=$3 [R=301,L]
results: www.domain.com/category/internet/subcategory/search-engine-optimization/more/articles/
more resources:
Apache mod rewrite docs
Apache RewriteBase docs
Mod rewrite forum
Absolute and Relative paths
SEW mod rewrite tips and tricks