Похоже, есть еще один запрос, который обрабатывается до применения правила. Если я использую правило, которое соответствует меньше чем index.php
(например, ..
для сопоставления xy
), результат будет таким, как ожидалось: xy
.С более расслабляющими правилами, такими как .*
или .+
, это не работает.x.*
работает нормально, однако.
Вы можете добавить еще одно условие для игнорирования запросов, например index.php
:
RewriteCond %{REQUEST_FILENAME} !index\.php$
RewriteRule ^(.+)$ index.php?url=$1 [L]
Это было проверено / отлажено с:
<?php
printf("url is: %s <br>\n", htmlspecialchars(filter_input(INPUT_GET, 'url')));
echo "<pre>",htmlentities(print_R($_SERVER, 1));