IIS web.config启用重写规则

时间:2013-08-16 15:18:05

标签: web-config rewrite iis-7.5 windows-server

我正在尝试从网址中删除扩展名.php,以便mysite.com/home.php可以作为mysite.com/home使用。

我正在1and1.com上托管我的网站,我问他们是否打开了Rewrite引擎,并且他们说对于运行IIS 7.5的Windows服务器它没有打开并且我可以打开它web.config文件中的代码。

我无法找到能够改写重写规则的代码。

以下是我尝试用来重写网址的内容。但我收到错误500.19。

是否真的有办法在web.config文件中重写?

web.config文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>    
    <system.webServer>
        <directoryBrowse enabled="false" />
        <defaultDocument>
            <files>
                <clear />
             <add value="home.php" />
             <add value="index.html" />
            </files>
        </defaultDocument>
        <rewrite>
            <rules>
                <rule name="rewrite php">
                  <!--Removes the .php extension for all pages.-->
                  <match url="(.*)" />
                  <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    <add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).php" />
                  </conditions>
                  <action type="Rewrite" url="{R:1}.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>  
</configuration>

2 个答案:

答案 0 :(得分:4)

发现1and1.com已关闭web.config文件的重写引擎。

但我发现我可以使用web.config文件在使用.htaccess文件时重定向到主页,并且重写规则从URL中删除.php扩展名。

web.config文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>    
    <system.webServer>
        <directoryBrowse enabled="false" />
        <defaultDocument>
            <files>
                <clear />
             <add value="home.php" />
             <add value="index.html" />
            </files>
        </defaultDocument>

    </system.webServer>  
</configuration>

.htaccess文件

AddHandler php5-script .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule ^(.*)$ $1.php [L]

两个文件都位于根目录中。而且效果很好。

答案 1 :(得分:-1)

在1and1 windows托管中,他们限制了web.config中的重定向和重写规则。因此,如果您使用<rewrite>标记,则会出现应用程序级错误。见 -

https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/aspnet-c39624/aspnet-application-restrictions-for-hosting-packages-a603259.html

https://help.1and1.com/hosting-c37630/scripts-and-programming-languages-c85099/aspnet-c39624/permitted-webconfig-file-settings-a617208.html

所以要么从.htaccess文件实现它,要么更改你的主机。