Hi,
Alex wrote:
>> I believe you want to use something like:
>>
>> RewriteCond %{QUERY_STRING} ^option=login$
>> RewriteRule ^/index.php?$ /register [R=301,L]
>>
>> It's been a while since I've done this, so I'm not sure
>> whether the "?" after index.php is matched. You may need to
>> adjust that pattern.
>
> I would expect to not want the "?" in the RewriteRule; it should be
> stripped by the process which breaking things into the path and the
> query_string. Untested opinion, it has been a while for me too.
Yep. I saw some suggestions with the trailing '?' so I
included it in the example, since I wasn't sure either way.
It's not wanted or needed, now that I've tested.
> And in principle you want to escape the ".":
"\."
No doubt. I tend to try and make any regexp's tightly
defined when I'm putting them into use. Though making them
a bit loose to start can help to ensure that the rest of the
rule is hit.
Both with the ? and without didn't make a difference. It
didn't work either way.
It seemed to ignore it entirely. It continued to report "component not
found", as if it's trying to process the option= portion.
If no one has any further ideas, perhaps you know of a better resource?
Of course I'm also happy to try other ideas...
I just tested locally. Here's what worked for me:
[tmz@f29 ~]$ cat /etc/httpd/conf.d/rewrite_test.conf
<Directory /var/www/html>
RewriteEngine on
RewriteCond %{QUERY_STRING} ^option=login$
RewriteRule ^index.php /register [R=301,L,QSD]
</Directory>
[tmz@f29 ~]$ curl -I 'localhost/index.php?option=login'
HTTP/1.1 301 Moved Permanently
Date: Sat, 02 Mar 2019 03:00:52 GMT
Server: Apache/2.4.38 (Fedora)
Location:
http://localhost/register
Content-Type: text/html; charset=iso-8859-1
The URI was matched without a leading /. To strip the query
string, the QSD flag is handy. That's in httpd >= 2.4.0.
--
Todd