mod_rewrite для псевдонима одного типа суффикса файла к другому - PullRequest
3 голосов
/ 12 августа 2008

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

В настоящее время я занимаюсь разработкой сайта с использованием ColdFusion, и у меня есть правило mod_rewrite, чтобы создать впечатление, что сайт использует PHP. Любые запросы для index.php обрабатываются index.cfm (правило сопоставляет * .php с * .cfm).

Это прекрасно работает - пока все хорошо. Проблема в том, что я хочу вернуть код состояния 404, если index.cfm (или любая страница ColdFusion) запрашивается напрямую.

Если я пытаюсь заблокировать доступ к файлам * .cfm с помощью mod_rewrite, он также возвращает 404 для запросов к * .php.

Полагаю, мне, возможно, придется изменить конфигурацию Apache, а не использовать .htaccess

Ответы [ 3 ]

1 голос
/ 15 августа 2008

Вы можете использовать флаг 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 .

0 голосов
/ 12 августа 2008

Вы должны использовать две разные группы правил перезаписи, одну для .php, другую для .chm и сделать их взаимоисключающими с RewriteCond% {REQUEST_FILENAME}. И используйте флаг [L], как предложено jj33.

Вы можете хранить свои правила в .htaccess.

0 голосов
/ 12 августа 2008

Опубликуйте правила, которые у вас уже есть, в качестве отправной точки, чтобы людям не приходилось пересматривать их, чтобы помочь вам.

Я бы посоветовал проверить [L] правило, которое отображает .php в файлы .cfm, в качестве первой попытки.

...