我使用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.php
和domain.com
register
时才有效
赞赏任何作品或建议或工作方法。
谢谢。
答案 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>