gaurav gaurav - 2 months ago 8
PHP Question

.htaccess multiple url variable

i want to write .htaccess to show url with common patters
for example

1: abc.com/mypage --> works fine
2: abc.com/mypage/page/1 --> works fine
3: abc.com/mypage/category/2 --> works fine
4: abc.com/mypage/page/1/category/2 --> not works fine


so below is my .htaccess code

RewriteRule mypage/page/([^/]*) /?p=main_page&page=$1 [L]
RewriteRule mypage/category/([^/]*) /?p=main_page&cid=$1 [L]
RewriteRule mypage/page/([^/]*)/category/([^/]*) /?p=main_page&page=$1&cid=$2 [L]
RewriteRule mypage /?p=main_page [L]


how can we fix it please guide way to fix it

Answer

You have a typo but more importantly you are missing anchors in your regex. You can use:

RewriteEngine On

RewriteRule ^mypage/page/([^/]+)/?$ ?p=main_page&page=$1 [L,QSA]
RewriteRule ^mypage/categroy/([^/]+)/?$ ?p=main_page&cid=$1 [L,QSA]
RewriteRule ^mypage/page/([^/]+)/category/([^/]+)/?$ ?p=main_page&page=$1&cid=$2 [L,QSA]
RewriteRule ^mypage/?$ ?p=main_page [L,QSA]