mod_rewrite для присвоения псевдонима одному типу суффикса файла другому

StackOverflow https://stackoverflow.com/questions/8832

  •  08-06-2019
  •  | 
  •  

Вопрос

Надеюсь, я смогу объяснить это достаточно ясно, но если нет, дайте мне знать, и я постараюсь уточнить.

В настоящее время я разрабатываю сайт с использованием 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top