PDA

View Full Version : [Solved] mod_rewrite too greedy?


dragos
09-29-2011, 03:11 PM
I have this rule into LSWS:

RewriteRule /([^/.]+)-article/?$ /index.php?action=article&author=$1 [L]
RewriteRule /([^/.]+)/([^/.]+)-article/?$ /index.php?action=article&author=$1&article=$2 [L]

If published in this order, will trigger 1st rule instead of 2nd rule for:
/doyle-conan/sherlock-article/

If I reverse the order, all works fine. Unfortunately that's not an acceptable solution.

This does work without a problem on apache (in this natural order I wrote here). Any help will be greatly appreciated.

webizen
09-29-2011, 05:26 PM
Try the modified rules below (should be placed in LSWS vhost Rwrite):


RewriteRule ^/([^/.]+)-article/?$ /index.php?action=article&author=$1 [L]
RewriteRule ^/([^/.]+)/([^/.]+)-article/?$ /index.php?action=article&author=$1&article=$2 [L]


Use the followings (leading "/" removed) for .htaccess rerwite:

RewriteRule ^([^/.]+)-article/?$ /index.php?action=article&author=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)-article/?$ /index.php?action=article&author=$1&article=$2 [L]

dragos
09-30-2011, 06:51 AM
Thank you. It was the obvious solution but I could not see it.

I did not knew you support .htaccess in LSWS so I've copied rules from .htaccess and I've spent some time until I've figured out that used in LSWF needed the / in front of the rule in order to work - but I've missed the ^.

One more time, thank you for "opening my eyes" - I've blamed greedy regexp not my eyes.

Floriarmblome
12-01-2012, 10:06 PM
You will need to change your approach slightly to avoid having having Apache go into an infinite loop, but something like the following should work.

RewriteEngine on
RewriteBase /

RewriteRule order/. /order.php?order=1 L