NextGEN Gallery Lightbox - Social Share URL Redirect

I am using NextGEN Gallery Pro - Lightbox's Social Share feature on my WordPress site which actually create and share a temporarily created url (first-url) on social media. Somehow the redirect doesn't work and generates a blank page when I visit the first-url. I am thinking to add a manual htaccess rewrite rule or preferably WordPress function to make this redirect possible.

How can I add such rewrite rule in .htaccess or a WordPress hook to redirect first-url to second-url?

Redirect first-url:

example.com/nextgen-share/121212/8989/full?uri=/landscape-photography/

to

second-url:

example.com/landscape-photography/#gallery/121212/8989

I've tried several manual .htaccess rewrite rules but no joy. Any inputs will be much appreciated.

Topic wp-redirect plugin-nextgen-gallery url-rewriting htaccess Wordpress

Category Web


You could do something like the following in .htaccess before the existing WordPress directives.

RewriteCond %{QUERY_STRING} ^uri=(/[^&]+)
RewriteRule ^nextgen-share/(\d+/\d+)/full$ %1#gallery/$1 [QSD,NE,R,L]

The RewriteRule pattern only matches against the URL-path, so you need the preceding RewriteCond directive in order to match the query string portion of the URL.

If the /121212/8989/ part always consists of 6 digits and 4 digits then you can be more restrictive in the regex. ie. (\d{6}/\d{4}). Likewise, if the uri parameter value consists of a limited subset of characters - perhaps a single path segment - then again this can be made more restrictive.

%1 is a backreference to the captured subpattern in the preceding RewriteCond directive, ie. the value of the uri URL parameter.

$1 is a backreference to captured group in the RewriteRule pattern, eg. 121212/8989 in your example URL.

The NE (noescape) flag is required to prevent the # being URL encoded in the response (and being seen as part of the URL-path).

The QSD (Query String Discard) flag (Apache 2.4+) is required to remove the query string from the redirected URL, otherwise the query string from the requested URL is copied as-is onto the end of the substitution. If you are still on Apache 2.2 then you can append a ? to the end of the substitution instead (essentially appending an empty query string).

This is a temporary (302) redirect.

UPDATE: This will only work if 121212 but what if it's alpha-numeric (abc121212)

To allow a-z (lowercase) and digits then you would need to modify the RewriteRule pattern to ^nextgen-share/([0-9a-z]+/[0-9a-z]+)/full$. If you need to allow uppercase letters as well then change [0-9a-z] to [0-9a-zA-Z]. You could also use the \w "word characters" shorthand character class here instead, which is the same as [0-9a-zA-Z_] - note the additional _ (underscore).

So, this becomes:

RewriteCond %{QUERY_STRING} ^uri=(/[^&]+)
RewriteRule ^nextgen-share/(\w+/\w+)/full$ %1#gallery/$1 [QSD,NE,R,L]

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.