Я надеюсь, что смогу объяснить это достаточно четко, но если нет, дайте мне знать, и я постараюсь уточнить.
В настоящее время я занимаюсь разработкой сайта с использованием ColdFusion, и у меня есть правило mod_rewrite, чтобы он выглядел так, как будто сайт использует PHP. Любые запросы для index.php обрабатываются index.cfm (правило сопоставляет * .php с * .cfm).
Это прекрасно работает - пока, так хорошо. Проблема в том, что я хочу вернуть код состояния 404, если index.cfm (или любая страница ColdFusion) запрашивается напрямую.
Если я пытаюсь заблокировать доступ к файлам * .cfm, используя mod_rewrite, он также возвращает 404 для запросов к * .php.
Я полагаю, что мне, возможно, придется изменить конфигурацию Apache, а не использовать .htaccess
Вы можете использовать S
флаг, чтобы пропустить 404
правило, например так:
RewriteEngine on
# Do not separate these two rules so long as the first has S=1
RewriteRule (.*)\.php$ $1.cfm [S=1]
RewriteRule \.cfm$ - [R=404]
Если вы также используете эту Alias
опцию, вы также должны добавить PT
флаг. Смотрите подробности в документации к mod_rewrite .
Опубликуйте правила, которые у вас уже есть, в качестве отправной точки, чтобы людям не пришлось пересматривать их, чтобы помочь вам.
Я бы посоветовал протестировать [L] на правиле, которое отображает .php в файлы .cfm в качестве первой попытки.
Вы должны использовать две разные группы правил перезаписи, одну для .php, другую для .chm и сделать их взаимоисключающими с RewriteCond% {REQUEST_FILENAME}. И используйте флаг [L], как предложено jj33.
Вы можете сохранить свои правила в .htaccess.