Home > front end >  Unable to set appropriate rewrite?
Unable to set appropriate rewrite?

Time:01-17

I want to block access via rewrite to IBM WebSphere WCM:

/wps/wcm/webinterface/login/login.jsp

And allow access to everything else under

/wps/*

Any ideas? I tried:

RewriteCond %{REQUEST_URI} ^/wps/wcm/webinterface/login/login\.jsp [OR,NC]
RewriteCond %{REQUEST_URI} !^/wps.*
RewriteRule ^/.* https://myhost.com/wps/portal [L,R=permanent]

CodePudding user response:

I got it working using the following (here's a snip of my rewrites)

RewriteCond %{HTTPS} off
RewriteRule ^/.* https://%{HTTP_HOST}/wps/portal [L,R=permanent]

RewriteCond %{REQUEST_URI} ^/wps/wcm/webinterface.*
RewriteRule ^/,* https://%{HTTP_HOST}/wps/portal [L,R=permanent]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} .*(jsp|jsv|wml|chtml) [OR,NC]
RewriteCond %{REQUEST_URI} !^.*(htm|html|js|pdf|swf|ico|gif|jpg|css|png) [NC]
...
RewriteRule ^/,* https://%{HTTP_HOST}/wps/portal [L,R=permanent]

Thanks everyone!

CodePudding user response:

Try the following instead (you don't need to use mod_rewrite here):

<If "%{REQUEST_URI} == '/wps/wcm/webinterface/login/login.jsp'">
    Require all denied
</If>

This serves a 403 Forbidden for the specific URL as stated.

(Requires Apache 2.4)


Using mod_rewrite:

RewriteCond %{REQUEST_URI} ^/wps/wcm/webinterface/login/login\.jsp [OR,NC]
RewriteCond %{REQUEST_URI} !^/wps.*
RewriteRule ^/.* https://myhost.com/wps/portal [L,R=permanent]

In a .htaccess context, the URL-path that the RewriteRule pattern matches against does not start with a slash, so the pattern ^/.* will never match (so the request is never "blocked"). However, you need the slash prefix if the rule is being used directly in a server or virtualhost context.

Since you only want to block a specific URL, you don't need to check that it's not something else (ie. does not start with /wps). But OR'ing these two conditions does not make sense (according to your criteria) as it would block the stated URL and every other URL that does not start with /wps.

This also issues a 301 redirect, it doesn't specifically "block" the request.

To block just that one URL you would need something like the following:

RewriteRule ^/?wps/wcm/webinterface/login/login\.jsp - [F]
  • Related