URL Rewrite не работает как ожидалось

на всей моей странице ссылки переписаны с

    example.com/test.htm

в

    example.com/index.php?page=test

Это работает нормально, но всякий раз, когда я хочу переписать ссылку, как

    example.com/test/abc.htm

и я хочу, чтобы это было

    example.com/index.php?page=test&id=abc

это не работает вообще. Вместо этого (взято из переменной $ _SERVER) я получаю:

PHP_SELF теперь «test.php / abc.htm»

SCRIPT_NAME теперь является «/test.php» вместо «/index.php», как это должно быть

Я вообще не понимаю, почему это происходит.
Мой .htacces выглядит так:

    Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^([^/]+)\.htm/?$ /index.php?page=$1 [L]
RewriteRule ^test/([^/]+)\.htm/?$ /index.php?page=test&id=$1 [L]

Заранее благодарю за любую помощь

1

Решение

Вы должны выключить MultiViews опции:

Options -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([^/.]+)\.htm/?$ index.php?page=$1 [L,QSA]
RewriteRule ^test/([^/.]+)\.htm/?$ index.php?page=test&id=$1 [L,QSA]
0

Другие решения

Других решений пока нет …