我发现我的服务器(_SERVER["SERVER_SOFTWARE"] -Microsoft-IIS/7.0),架构为x86,未启用mod_rewrite功能。请问如何启用mod_rewrite?能否有人帮我解决这个问题。
对我有效的答案是安装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="(\<|%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>
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>
目前尚无适用于Windows操作系统的LINUX版本mod_rewrite免费版。我找到的唯一解决方法是使用Web Platform Installer中免费提供的URL REWRITE在IIS上导入.htaccess文件。
安装URL REWRITE组件后,请按照下面链接中的步骤导入.htaccess文件并创建其Windows等效的web.config文件。
http://www.iis.net/learn/extensions/url-rewrite-module/importing-apache-modrewrite-rules
祝福。
1)找到httpd.conf文件(通常可以在名为conf、config或类似名称的文件夹中找到此文件)
2)找到并取消注释LoadModule rewrite_module modules/mod_rewrite.so这一行
3)找到包含DocumentRoot“C:/path/to/my/root”的行,您将在其中找到以下内容
请确保这两个大括号内的内容看起来像:选项 全部
允许覆盖 全部
4) 现在全部完成,请重新启动Apache服务器,然后您就可以开始了。
/etc/httpd/
或/etc/apache2
中找到配置。 - Michel Feldheim