Пересылка URL-адресов IIS сообщает об ошибке HTTP 404 с KLEIN. php - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок в IIS и до сих пор работал только с Apache (с .htaccess). Моя проблема в том, что я получаю только 404 ОШИБКУ с сообщением, что ни одна страница не может быть найдена.

KLEIN. php Фреймворк работает, только если все запросы обрабатываются индексным файлом. Все файлы об этом проекте установлены в каталоге root: Структура файла на сервере / Root

Я не думаю, что это фреймворк, а конфигурация сервера, но я не могу исключить это, поэтому я добавляю примеры кода

РЕДАКТИРОВАТЬ: Файл веб-конфигурации:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Importierte Regel 1" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="./index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Конфигурация IIS: RISRITE URL IIS

Извлечение из файла индекса:

 <?php
    //Require Settings & Database
    require_once 'settings.php';
    require_once 'db.php';

    //Load classes
    require_once 'inc/User.php';

    #######################
    # CREATE KLEIN OBJECT #
    #######################

    require_once __DIR__.'/vendor/autoload.php';
    $klein = new \Klein\Klein();


    #############################
    # DEFINE APP PATH FOR KLEIN #
    #############################

    define('APP_PATH', '/');
    $base  = dirname($_SERVER['PHP_SELF']);
    if(ltrim($base, '/')) $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], strlen($base));


    ###########################
    # LOAD THE DEFAULT LAYOUT #
    ###########################

    $klein -> respond(function($request, $response, $service) {
        $service -> layout('layouts/default.php');
    });

    #########
    # PAGES #
    #########

    $klein -> respond('/', function ($request, $response, $service){
        $service -> pageTitle = '/ Home';
        $service -> render('views/welcome.php');
    });

    $klein->dispatch();

Извлечение из файла настроек:

<?php
$settings = (object)array(
    "root_path" => "/"
);

1 Ответ

0 голосов
/ 24 апреля 2020

попробуйте использовать приведенное ниже правило:

<rule name="Rerwite index.php" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
...