laravel 4 url​​ rewrite在Windows Server 2008上不起作用

时间:2014-08-15 14:05:47

标签: php .htaccess mod-rewrite iis-7

我使用Laravel 4.2开发了一个完美的Web应用程序。此应用程序已经过100%测试并经过测试团队的批准。现在我已将其上传到运行IIS7的Windows Server 2008 R8。我还设置了一个域名,主页工作正常。

但是网址重写存在问题。例如,

http://domain.com  //This works along with css and js loaded properly

现在错误部分

http://domain.com/register             //Doesn't work
http://domain.com/index.php/register   //This works

所以我尝试了一种方法。在domain.com的IIS域中,我从Laravel的公共文件夹中找到的.htaccess导入了URL规则。导入成功。

现在我访问时,

http://domain.com            //This works but without CSS and JS
http://domain.com/register   //Now this works but without CSS and JS

我使用的.htaccess代码是

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteRule . index.php [L]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

为什么网站仅在index.phpdomain.com

之间有register时才有效

赞赏任何作品或建议或工作方法。

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要在web.config

中进行与IIS兼容的重写(URLRewrite)
<?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="public/{R:0}" />
                </rule>
                <rule name="Laravel Rewrite" 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="public/index.php/{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>