Я добавил следующие правила в файле.htaccess:
RewriteRule ^welcome/?$ index.php [NC,L]
RewriteRule ^bye/?$ bye.php [NC,L]
RewriteRule ^.*/?$ error.html [NC,L]
когда я вхожу в http://localhost/welcome, он переходит на страницу с ошибкой, а не на индексную страницу.
Но когда я удаляю последнее правило в файле.htaccess, он показывает страницу индекса. Не следует останавливаться при совпадении с первым правилом.
Я хочу, чтобы пользователи не могли напрямую обращаться к странице индекса, введя строку URL.
что не так?
Вам нужно проверить REDIRECT_STATUS
в отдельном правиле, чтобы проверить, выполняется ли правило один раз или нет.
RewriteEngine On
# check if rules have run once
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule ^ - [L]
# block direct access to index.php
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^ - [F]
# your default rules
RewriteRule ^welcome/?$ index.php [NC,L]
RewriteRule ^bye/?$ bye.php [NC,L]
RewriteRule .* error.html [L]