php mod-rewrite iis-7 virtualhost laravel

php - configurando laravel en IIS7



mod-rewrite iis-7 (8)

Acabo de hacerlo funcionar después de largas horas de google y pruebas. Aquí están mis pasos:

laravel5 con IIS 8.5

  1. instalar instalador de plataforma de ventana
  2. instalar php-5.6 con el instalador de plataforma de ventana
  3. instalar php-manager para IIS con instalador de plataforma de ventana (opcional)
  4. instalar Visual C ++ Redistributable para Visual Studio 2012 (versión x86)
    Sin esto, el proceso de FastCgi es inesperado (php_info () no funciona)
  5. instalar composer.exe
  6. exportar la ruta del contenedor del vendedor del compositor a la ruta
    set PATH=%PATH%;%USERPROFILE%/AppData/Roaming/Composer/vendor/bin
  7. ejecutar composer global require "laravel/installer=~1.1"
  8. ejecutar la lavarel new app
  9. crear una nueva aplicación en IIS y apuntar a <app>/public

Eso es todo, ¡Feliz Lavarel!

Referencia: http://alvarotrigo.com/blog/installing-laravel-4-in-windows-7-with-iis7/

Quiero configurar mi servidor IIS7 para que funcione con una aplicación web escrita en laravel (framework php).

Encontré algo similar para CI ( enlace )

pero no funciona en laravel (por supuesto, laravel la redirección index.php ).

en realidad, solo funciona la página de inicio ( www.mysite.com/public )

alguien usa / d IIS7 con Laravel?

gracias por adelantado


Aquí está mi archivo de trabajo, con dos reglas: (el sitio web apunta a la carpeta pública)

<?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>


Así es como lo arreglé. abra el archivo de configuración, si la siguiente asignación no existe, ponga estas líneas debajo

<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>


Compruebe sus asignaciones de controlador en IIS:

  1. lanzar IIS
  2. haga clic en su sitio
  3. seguir ''mapeos de manejadores'' (en el bloque IIS)
  4. Buscar Path PHP, Nombre = PHPxx_via_FastCGI (xx = versión php)
  5. Haga doble clic en él, haga clic en restricciones de solicitud y haga clic en la pestaña ''Verbos'' donde elija Todos los verbos. Esto lo arreglará :-)

Para instalar IIS en sus ventanas, vaya al control panel -> uninstall programs y presione Turn Off Windows Features On/Off enlace Turn Off Windows Features On/Off y haga clic en IIS y seleccione la opción CGI .

Descargue Web Platform Installer desde Internet install PHP and SQL drivers for IIS

Abra IIS desde los programas agregue el sitio web. y para punto de carpeta Public carpeta Public en el proyecto laravel / lumen.

para proyectos de Laravel y Lumen. Crear proyecto desde el compositor en cualquier carpeta accesible. Llegué a public carpeta public en la estructura de la carpeta y creo web.config archivo web.config con los siguientes contenidos. Obtuve esto de 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>


Si desea poder recuperar sus $ _GET variables, no use:

<match url="^(.*)$" ignoreCase="false" />

En su lugar use:

<match url="^" ignoreCase="false" />


Utilicé el código a continuación, redirigí a index.php/{R:1} lugar de public/{R:1} Funciona directamente de la caja y luego sin cambios de ruta.

<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>


web.config archivo web.config en la carpeta raíz dentro de <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>

luego copie el archivo index.php de la carpeta pública en la carpeta raíz del proyecto modificando el ../paths.php en paths.php como lo paths.php esta guía

ahora todo funciona a la perfección