我想设置我的IIS7
服务器,以便让它适用于用laravel
(php框架)编写的Web应用程序。
我发现CI
(link)
但它不适用于laravel
(当然我删除了index.php
重定向)。
实际上只有主页有效(www.mysite.com/public
)
有人在Laravel中使用/ d IIS7
吗?
提前致谢
答案 0 :(得分:6)
我在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
,this指南说明
现在一切都很完美
答案 1 :(得分:4)
我使用了以下代码,重定向到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>
答案 2 :(得分:3)
检查IIS中的处理程序映射:
答案 3 :(得分:3)
这是我的工作文件,有两个规则:(网站指向公共文件夹)
<?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>
答案 4 :(得分:3)
经过长时间的谷歌和测试后才开始工作了。这是我的步骤:
带有IIS 8.5的laravel5
set PATH=%PATH%;%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
composer global require "laravel/installer=~1.1"
lavarel new app
<app>/public
就是这样,Happy Lavarel!
参考:http://alvarotrigo.com/blog/installing-laravel-4-in-windows-7-with-iis7/
答案 5 :(得分:0)
如果您希望能够检索$ _GET变量,请不要使用:
<match url="^(.*)$" ignoreCase="false" />
改为使用:
<match url="^" ignoreCase="false" />
答案 6 :(得分:0)
以下是我修复它的方法。 打开配置文件,如果以下映射不存在,请将这些行放在
下HTML5
答案 7 :(得分:0)
要在您的窗口上安装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项目中的Public
文件夹。
为Laravel和Lumen项目。在任何可访问的文件夹中从composer创建项目。到达文件夹结构中的public
文件夹并创建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>