Intereting Posts
функция доступности домена php предотвращение прямого доступа к php-странице, доступ только при перенаправлении Получение всех узлов на уровне полного бинарного дерева, формат массива Алгоритм сортировки: итоговые суммы погашения Magento отсортированы неправильно, что приводит к неправильному исчислению налога на отправку несколько таблиц SQL с PHP для создания карты сайта Ошибка PHP с использованием функции preg_match Лучший способ проверки URL-адреса в PHP Объединить массивы (PHP) Localhost / phpmyadmin / возвращает php-код Установите / снимите флажок (Выбрать все), если все дочерние флажки выделены в этом div как установить и запустить phpize CakePHP 2.0 Выберите форму, выбранную Mulitple JQuery – использовать ту же функцию для нескольких запросов Избегайте использования isset в PHP при доступе к $ _POST, $ _GET и другим переменным? PHP: Прокрутите все месяцы в диапазоне дат?

Перенаправление всех запросов php через index.php

Как я могу перенаправить все запросы на php-страницы через index.php?

Мой .htaccess выглядит следующим образом:

Options +FollowSymLinks IndexIgnore */* #Turn on the RewriteEngine RewriteEngine On # Rules RewriteCond %{REQUEST_FILENAME} !-f RewriteRule !.*\.(js|ico|gif|jpg|png|css|pdf)$ index.php%{REQUEST_URI} [L] 

В основном, я пытаюсь эмулировать основные страницы .NET. У index.php есть заголовок / нижний колонтитул сайта.

Он перенаправляет 404 на index.php. Как я могу перенаправить все запросы на php-страницы (кроме самого index.php)?

Существуют ли какие-либо проблемы с производительностью с этим методом (не хотите использовать фреймворк)?

Solutions Collecting From Web of "Перенаправление всех запросов php через index.php"

Вот то, что я использую (и использую для себя):

 <IfModule mod_rewrite.c> # Redirect /index.php to / (optional, but recommended I guess) RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /.*index\.php RewriteRule ^index.php/?(.*)$ $1 [R=301,L] # Run everything else but real files through index.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1?%{QUERY_STRING} [L] </IfModule> 

Поскольку комментарии предполагают, что он будет маршрутизировать каждый запрос, который не является фактическим файлом для index.php

Использование:


    
         RewriteEngine On
         RewriteBase /
         RewriteCond% {REQUEST_FILENAME}! -f
         RewriteCond% {REQUEST_FILENAME}! -d
         RewriteCond $ 1! ^ (Index \ .php | public | css | js | robots \ .txt)
         RewriteRule ^ (. *) $ Index.php / params = $ 1 [L, QSA]
    

    
         ErrorDocument 404 /index.php
    

URL-адрес: http://www.site.com/friend/josh/03-13-2012

Таким образом, значение var $ params var:

друг / Josh / 03-13-2012

Только нужен explode () "/", поэтому вы получите массив с параметрами:

 array( 0 => friend 1 => josh 2 => 03-13-2012 ) 
 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !index\.php$ RewriteRule .*\.php$ index.php?q=%{REQUEST_URI} [L] 

Уловит все запросы, заканчивающиеся на .php, которые не указывают на файл, заканчивающийся на index.php, и перенаправляют их на index.php в параметре get q

Чтобы перенаправить все несуществующие запросы в /index.php , вы также можете использовать директивы ErrorDocument и FallbackResource .

Попробуйте воспользоваться одним из следующих примеров:

  ErrorDocument 404 /index.php FallbackResource /index.php 

Эти директивы являются частью модулей ядра apache, и вам не нужно включать mod-rewrite для их использования.

Если вы ищете способ перенаправления всех запросов (включая реальные файлы / dirs), попробуйте следующее перенаправление

 RedirectMatch ^/(?!index\.php).+)$ /index.php