IIS сервер, как настроить перезапись URL для Laravel 5? - PullRequest
0 голосов
/ 28 мая 2018

В настоящее время Uni предлагает нам только сервер IIS для размещения нашего php-сайта, мы хотим использовать фреймворк Laravel, и он работает на домашней странице.Но не на любых других контроллерах.

Текущий web.config в моей общей папке:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)/$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Redirect" redirectType="Permanent" url="/{R:1}" />
        </rule>
        <rule name="Imported Rule 2" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />

        </rule>

      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Мой маршрут:

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Я не знаю оIIS очень хорошо, так у вас есть какие-либо идеи по настройке, чтобы он работал?

PS У нас нет прав на настройку сервера IIS в лагерях, у нас есть права на загрузку web.config.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Наконец-то я решил это, это не идеальный способ, но он действительно сработал.

<rule name="rewrite all requests to index.php" stopProcessing="true">
     <match url="^(.*)$" ignoreCase="false" />
     <conditions logicalGrouping="MatchAll">
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
     </conditions>
     <action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>

<rule name="Redirect / to index.php" stopProcessing="true">
     <match url="^" ignoreCase="false" />
     <action type="Rewrite" redirectType="Permanent" url="index.php" />
</rule>

Как я уже упоминал в начале, это не идеальное решение, переписать все URLв index.php , поэтому URL-адреса не такие красивые, как, например,

  • a.com/login -> a.com/index.php/login
  • a.com/ -> a.com/index.php
  • a.com/login/index.php -> 404

Поскольку я не очень знаком с конфигурацией / перезаписью IIS, должно быть какое-то лучшее решение, поэтому совет по улучшению этих строк файла конфигурации будет отличным.

В любом случае это работало в ситуации, когда у вас нет разрешения на настройку сервера IIS.

Это должно заставить проект Laravel работать на любом сервере IIS без изменения настроек сервера.

Refs

0 голосов
/ 28 мая 2018

Я попал в ту же проблему.После многих попыток и исследований я понял, что web.config недостаточно.Путь к корневой папке должен быть задан в настройках маршрута IIS, как показано на следующем снимке экрана. laravel path on IIS.В противном случае мне не удалось решить проблему с маршрутизацией.

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