Подтвердить что ты не робот

Перенаправление всех запросов 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)?

Есть ли проблемы с этим способом (не хотите использовать фреймворк)?

4b9b3361

Ответ 1

Вот то, что я использую (и использовал для возрастов):

<IfModule mod_rewrite.c>
    # Redirect /index.php to / (optional, but recommended I guess)
    RewriteCond %{THE_REQUEST} ^[A-Z]{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

Ответ 2

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

    
        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: www.site.com/friend/josh/03-13-2012

Итак, значение var param:

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

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

array(
0 => friend
1 => josh
2 => 03-13-2012 
)

Ответ 3

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !index\.php$
RewriteRule .*\.php$ index.php?q=%{REQUEST_URI} [L]

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

Ответ 4

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

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

 ErrorDocument 404 /index.php


 FallbackResource /index.php

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

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

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