Вопрос

Возможно ли через .htaccess отправить запрос в другой файл?Немного поясняю:

index.php обрабатывать все страницы следующим образом:

switch($page) {
    case 'index':
        require_once START . '/includes/pages/index.php';
    break;

    case 'another':
        require_once START . '/includes/pages/another.php';
    break;
       and so on...

В .htaccess:

RewriteRule ^index$ index.php?page=index [L]
RewriteRule ^another$ index.php?page=another [L]

Ссылки (напр. локальный хост/84ss7d41):

RewriteRule ^(.*)$ index.php?QUERY_STRING=$1 [L]

Итак, в /includes/pages/index.php:

if ($_GET['QUERY_STRING']) {
$_SERVER['QUERY_STRING'] = $_GET['QUERY_STRING'];
$query_string = check_input($_SERVER['QUERY_STRING']);
    //checking/validating processing further...

Как сделать такие ссылки локальный хост/84ss7d41 работать так же, как и сейчас, но без index.php ?Я пытаюсь отделить свой «проект», если что-то произойдет (файлы случайно удалены), проверка/проверка данных будет работать так же, без основного сценария, это похоже на:

if (main project file index.php/ || /includes/pages/index.php doesn't exist) {
  check/validate data with reserve.php
}
Это было полезно?

Решение

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*) /index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /reserve.php [L]

Это перенаправляет все запросы, которые не соответствуют существующему файлу (например, изображению), на index.php, где вы можете затем использовать $_SERVER["REQUEST_URI"] решить, как действовать.Это реализация паттерна Front Controller. http://en.wikipedia.org/wiki/Front_Controller_pattern

Кроме того, если index.php не может быть найден Apache, тогда запрос будет перенаправлен на reserve.php

Хотя создание такой избыточности не обязательно является «правильным» поступком (что, если Reserve.php тоже пропадет?).Обеспечение надлежащего контроля доступа к index.php вероятно, это лучший подход.

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