如何在iis服务器上启用mod_rewrite

时间:2012-12-11 06:23:21

标签: php iis iis-7 url-rewriting

我发现我的服务器上没有启用mod_rewrite功能(_SERVER [“SERVER_SOFTWARE”] -Microsoft-IIS / 7.0),架构x86。我如何启用mod_rewrite.Could任何人都可以帮助我。

4 个答案:

答案 0 :(得分:2)

如果您在商业托管服务提供商处托管,他们很可能会安装Microsoft URL Rewrite模块。这为您提供了与Apache mod_rewrite模块类似的功能。

要测试是否已安装此模块,请在您网站的根目录中创建一个名为web.config的文件,其中包含以下内容,并尝试http://www.domain.com/google domain.com是您网站的域名。如果您被重定向到google.com,则您的主机已安装了URL重写模块。

的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to google.com" stopProcessing="true">
                    <match url="^google$" />
                    <action type="Redirect" url="http://www.google.com/" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

答案 1 :(得分:2)

对我有用的答案是安装Microsoft URL Rewrite模块,然后在网站的根目录中创建一个web.config文件(规则):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Security Rule" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAny">
            <add input="{QUERY_STRING}" pattern="mosConfig_[a-zA-Z_]{1,21}(=|\%3D)" ignoreCase="false" />
            <add input="{QUERY_STRING}" pattern="base64_encode.*\(.*\)" ignoreCase="false" />
            <add input="{QUERY_STRING}" pattern="(\&lt;|%3C).*script.*(\>|%3E)" />
            <add input="{QUERY_STRING}" pattern="GLOBALS(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
            <add input="{QUERY_STRING}" pattern="_REQUEST(=|\[|\%[0-9A-Z]{0,2})" ignoreCase="false" />
          </conditions>
          <action type="CustomResponse" url="index.php" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
        </rule>
        <rule name="SEO Rule">
          <match url="(.*)" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
            <add input="{URL}" negate="true" pattern="^/index.php" ignoreCase="false" />
            <add input="{URL}" pattern="(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
 </system.webServer>
</configuration>

答案 2 :(得分:0)

1)找到httpd.conf(通常这个文件可以在文件夹中找到conf,conf或者那些行中的东西)

2)找到并取消注释行LoadModule rewrite_module modules / mod_rewrite.so

3)找到DocumentRoot“C:/ path / to / my / root”的行,在那里你会找到像

这样的内容

确保这两个大括号内的内容看起来像

全部选项

AllowOverride All

4)所有已完成的操作现在重新启动Apache服务器,您将一切顺利

答案 3 :(得分:0)

对于Windows操作系统,没有适用于LINUX的mod_rewrite的免费版本。我发现的唯一出路是使用URL REWRITE在IIS上导入.htaccess文件,该文件可在Web平台安装程序上免费获得。

安装URL REWRITE组件后,请按照以下链接中的步骤导入.htaccess文件并创建其等效的windows.config文件。

http://www.iis.net/learn/extensions/url-rewrite-module/importing-apache-modrewrite-rules

干杯。