1

i have a .htaccess file

RewriteEngine On
RewriteCond %{HTTP_HOST} ^localhost/host
RewriteRule (.*) http://localhost/host/$1 [R=301,L]

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?seg1=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?seg1=$1

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?seg1=$1&seg2=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?seg1=$1&seg2=$2

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?seg1=$1&seg2=$2&seg3=$3
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?seg1=$1&seg2=$2&seg3=$3

my questions, is there a simplified .htaccess for those code? thanks!

KaLv1n K
  • 111
  • 1
  • 3
  • 10

1 Answers1

4

If your PHP can process empty parameters correctly then why not

RewriteRule ^([-\w]+)?/?([-\w]+)?/?([-\w]+)?/?$ index.php?seg1=$1&seg2=$2&seg3=$3

instead of the six rules?

So /a will generate index.php?seg1=a&seg2=&seg3=

TerryE
  • 10,724
  • 5
  • 26
  • 48
  • sorry, i'm a newby.. how i wrote those code in .htaccess? like this: ? `RewriteEngine On` `RewriteCond %{HTTP_HOST} ^localhost/host` `RewriteRule (.*) http://localhost/host/$1 [R=301,L]` `RewriteRule ^([-\w]+)?/?(-\w]+)?/?([-\w]]+)?/?$ index.php?seg1=$1&seg2=$2&seg3=$3` it return error for http://localhost/host/page/about/ – KaLv1n K Mar 04 '12 at 16:56
  • You are missing a [ before the second `-\w`. See the regexp_checker on http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules if you want to debug your regexps – TerryE Mar 04 '12 at 17:08