Yii :: showScriptName, установленный в false в urlManager, не работает в IIS - PullRequest
1 голос
/ 28 марта 2020

У меня запущен проект yii2 в IIS7.5, ниже - часть моего веб-сайта. php:

 $config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__) . '/app',
    'viewPath' => dirname(__DIR__) . '/resources/views',
    'runtimePath' => dirname(__DIR__) . '/storage/framework',
    'vendorPath' => dirname(__DIR__) . '/vendor',
    'bootstrap' => ['log'],
    'controllerNamespace' => 'app\http\controllers',
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],
    ...
    'components' => [
        ...
        'db' => require(__DIR__ . '/database.php'),
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => true,
            'rules' => [
                'api.shop.index'=>'shop/index',
                ...
             ],
        ],
    ],
    'modules' => require(__DIR__ . '/module.php'),
    'params' => $params,
];

ниже - мой web.config

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

Если Я установил для showScriptName значение true и перешел по этому URL-адресу:

http://example.com/api/gateway/public/index.php/api.shop.index

, он работает хорошо, если я установил для showScriptName значение false, и перешел по этому URL-адресу:

http://example.com/api/gateway/public/index/api.shop.index

, когда сервер выдает ошибку: Входной файл не указан.

1 Ответ

0 голосов
/ 30 марта 2020

'rules' => ['api.shop.index' => 'shop / index', ...],

вы получаете эту ошибку, потому что вы установили магазин /индекс. поэтому я не могу найти индексный файл без расширения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...