Я хочу настроить свой сервер IIS7
, чтобы он работал с веб-приложением, написанным в laravel
(php framework).
Я нашел что-то подобное для CI
( ссылка )
но он не работает на laravel
(конечно, я удалил перенаправление index.php
).
фактически только домашняя страница работает ( www.mysite.com/public
)
IIS7
нибудь использует / d IIS7
с Laravel?
заранее спасибо
Я создал файл web.config
в корневой папке внутри <configuration></configuration>
:
<system.webServer> <defaultDocument> <files> <clear /> <add value="index.php" /> <add value="default.aspx" /> <add value="Default.htm" /> <add value="Default.asp" /> <add value="index.htm" /> <add value="index.html" /> </files> </defaultDocument> <handlers accessPolicy="Read, Execute, Script" /> <rewrite> <rules> <rule name="Imported Rule 2" 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="public/{R:1}" /> </rule> </rules> </rewrite> </system.webServer>
затем скопируйте файл index.php
../paths.php
папки в корневую папку проекта, изменяя ../paths.php
в paths.php
как говорится в этом руководстве.
теперь все работает отлично
Проверьте сопоставления обработчиков в IIS:
Я использовал приведенный ниже код, перенаправляю на index.php/{R:1}
а не public/{R:1}
Работает прямо из коробки, а затем без изменений пути.
<rewrite> <rules> <rule name="Imported Rule 2" 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/{R:1}" /> </rule> </rules> </rewrite>
Вот мой рабочий файл с двумя правилами: (веб-сайт указывает на общую папку)
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="RewriteRequestsToPublic"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> </conditions> <action type="Rewrite" url="/{R:0}" /> </rule> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
Просто он работал после долгих часов работы с Google и тестирования. Вот мои шаги:
laravel5 с IIS 8.5
set PATH=%PATH%;%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
composer global require "laravel/installer=~1.1"
lavarel new app
<app>/public
Вот и все, Счастливый Лаварел!
Ссылка: http://alvarotrigo.com/blog/installing-laravel-4-in-windows-7-with-iis7/
Если вы хотите получить переменные $ _GET, не используйте:
<match url="^(.*)$" ignoreCase="false" />
Вместо этого используйте:
<match url="^" ignoreCase="false" />
Вот как я его исправил. откройте файл конфигурации, если следующее отображение не существует, поместите эти строки в
<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>
Чтобы установить IIS
на свои окна, перейти к control panel -> uninstall programs
и нажать « Turn Off Windows Features On/Off
ссылку и выбрать IIS
и выбрать вариант CGI
.
Загрузите Web Platform Installer
из Интернета, install PHP and SQL drivers for IIS
Откройте IIS
из программ, добавьте сайт. а для точки общей папки – в общую папку в проекте laravel / lumen.
для проектов Laravel и Lumen. Создавайте проект из композитора в любой доступной папке. попал в общую папку в структуре папок и создал файл web.config
с содержимым ниже, которое я получил от laracasts
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Rule 1" stopProcessing="true"> <match url="^(.*)/$" ignoreCase="false" /> <action type="Redirect" redirectType="Permanent" url="/{R:1}" /> </rule> <rule name="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>