简体   繁体   中英

URL rewriting is not working

I would like to use URL rewriting to a website.I had placed an .htaccess file in the server and turned on rewrite mode on and it seems to be working except one issue that I'm having. I have two php extension files namely category.php and products.php resp.

Here is my requirement, the category.php should be called when one condition is met and products.php should be called another condition is meet

.HTACCESS :

RewriteRule ([A-Za-z-_]+) category.php?arg=name
RewriteRule ^([A-Za-z-_'']+)/([0-9]+) product.php?arg=name&pid=id

So her are my website url FOR CATEGORY PAGES

http://www.mysite.com/category1

FOR PRODUCT PAGES

http://www.mysite.com/product-name/101

So the problem is with second url rewrite condition ie product page url.When i put the ur l in browser it goes to 404.Whereas 1 rewrite condition seemed to work.Please help to access the webpage in the above format.

You need to add boundaries to your regex and backreference your captured groupings:

RewriteRule ^([A-Za-z-_]+)$ category.php?arg=$1 [L]
RewriteRule ^([A-Za-z-_'']+)/([0-9]+)$ product.php?arg=$1&pid=$2 [L]

Problem is that in regex's character class hyphen should be either or start or at end otherwise it needs to be escaped (it will represent range otherwise).

Both of our rules:

RewriteRule ([A-Za-z-_]+) category.php?arg=name
RewriteRule ^([A-Za-z-_'']+)/([0-9]+) product.php?arg=name&pid=id

are not using correct regex and will produce wrong results.

Replace your rules with this code:

RewriteRule ^([a-z_-]+)/?$ /category.php?arg=$1 [L,NC,QSA]
RewriteRule ^([a-z_'-]+)/([0-9]+)/?$ /product.php?arg=$1&pid=$2 [L,NC,QSA]

PS: I have made some more corrections in the rule to handle unexpected situations better.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM