The issue: I am unable to learn how to match a literal us dot during my expression and so i could rewrite query strings that contains dots. First I attempted something similar to this:

RewriteRule ^([\.\w]+)$ index.php?url=$1 [L]

I've got a php script:

echo "url is: ".$_GET['url'];

that ought to, theoretically, output something that I write during my query. However for any query that contains only letters and dots, my script always results:

url is: index.php

I have attempted these expressions too:


And it makes sense exactly the same.

So now you ask ,: are my expressions wrong or performs this have something related to server's config?

It appears like there's another request that is processed prior to the rule is used, basically make use of a rule which fits under index.php (e.g. .. for matching xy), it makes sense not surprisingly: xy. With increased relaxing rules like .* or .+ it fails. x.* works fine however.

You can include another condition to disregard demands like index.php:

RewriteCond %{REQUEST_FILENAME} !index\.php$
RewriteRule ^(.+)$ index.php?url=$1 [L]

It was examined/ debugged with:

printf("url is: %s <br>\n", htmlspecialchars(filter_input(INPUT_GET, 'url')));
echo "<pre>",htmlentities(print_R($_SERVER, 1));