Support » Plugin: Comment Reply Email Notification » Invalid Request

  • ohgoodiee

    (@ohgoodiee)


    Hello and thank you for the lightweight plug-in. Just installed. While testing it, I clicked on the unsubscribe like in the email that was sent to notify of a new comment and received a blank page, only stating “Invalid Request.”

Viewing 6 replies - 1 through 6 (of 6 total)
  • Thread Starter ohgoodiee

    (@ohgoodiee)

    Found the issue.

    The unsubscribe link sent in the emails is missing the “index.php”

    Current link: /cren/unsubscribe?comment

    Correct link: /index.php/cren/unsubscribe?comment

    Auto detection needed for sites that use the index.php option.

    Plugin Author Arno Welzel

    (@awelzel)

    There is no such thing like “Auto detection needed for sites that use the index.php option.”.

    WordPress provides an .htaccess file for Apache to forward every request which does not query an existing file or folder to /index.php as this is a crucial part of the WordPress functionality:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress

    Therefore /index.php is never needed in any URL in a WordPress website and there is also no way for a plugin to detect if /index.php is a necessary part of the URL as this information is never passed to any plugin or theme.

    In fact my plugin of course uses WordPress API to the get the base URL – see https://developer.wordpress.org/reference/functions/site_url/.

    If your WordPress needs /index.php as part of the URL this is a bug of your site which must be fixed. A plugin can not detect this.

    If you use NGINX instead of Apache – NGINX also provides the possibility to fordward every request to /index.php:

    
    location @missing {
        rewrite ^ $scheme://$host/index.php permanent;
    }
    
    • This reply was modified 1 year ago by Arno Welzel. Reason: More detailed explanation about how the plugin works
    Thread Starter ohgoodiee

    (@ohgoodiee)

    Thank you for the reply.

    I do have the normal garb in .htaccess.

    I worked with another developer on this same issue. It’s because of permalinks.

    This is not an uncommon scenario.

    The solution was to change a line that he later included in an update.

    get_home_url( null, “index.php/->the-plug-in-name<-/$action”)

    I can go back and change it and let you try it for yourself if you would like.

    Plugin Author Arno Welzel

    (@awelzel)

    I just checked the plugin code.

    “Invalid request” is reported by the plugin itself – so the request is correct without index.php. Otherwise the plugin would not respond at all.

    However, the parameters after /cren/unsubscribe need to be intact as well and if that does not work on your server, there is some other issue. I have never seen that query parameters are just thrown away for permalinks. On one of my own sites this works fine as well:

    For example for my QR code generator:

    https://arnowelzel.de/en/tools/qr-code-generator?qr_text=https%3A%2F%2Farnowelzel.de&qr_ecc=M

    Or my spoke length calculator:

    https://arnowelzel.de/en/tools/spoke-length-calculator?sc_rt=45&sc_ht=61&sc_rd=602&sc_fd1=38&sc_fd2=38&sc_fl1=36&sc_fl2=36&sc_n=36&sc_c1=3&sc_c2=&sc_calc=Calculate

    Both are implemented with a custom plugin which also just uses the query parameters from the URL – and on my site custom permalinks are also enabled of course.

    I just don’t want to add index.php for everyone since I know WordPress hosting providers which in fact don’t use index.php and have other ways of loading WordPress. Maybe I add this as an option since detecting the need of index.php is just not possible.

    Thread Starter ohgoodiee

    (@ohgoodiee)

    Hello.

    I’m not sure how the mega hosting companies install wp with the automated scripts.

    For me, I installed it manually, out of the box, the permalink was set to: index.php/%year%/%month%/%day%/post title. If I had known back then, I would have set it differently and next year when I have to re-install the OS, (no upgrade path for current version) and wp, I’ll take the time to manually import everything to reflect the new url scheme.

    I’ll send an email to the other developer to ask what he did so that it would know what the permalink structure is and get back to you. If for no other reason than for information.

    For now, I just changed line 257 in cren_plugin.php to include the index.php and it works perfect.

    Jazzed-up the email template and all is good.

    Thread Starter ohgoodiee

    (@ohgoodiee)

    Hello. So it turns out that the other developer changed this line in his code to make it work.

    // Pretty permalinks.
    	$path = $wp_rewrite->root . "plugin-name/$action";
    
    	return add_query_arg(
    		array(
    			'nv'  => $value,
    			'nte' => $empty,
    		),
    		get_home_url( null, $path)
    	);
    
    

    Don’t know if it helps or not, but thought I would throw it out there.

    • This reply was modified 12 months ago by ohgoodiee.
Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘Invalid Request’ is closed to new replies.