The iis7_add_rewrite_rule() WordPress PHP function adds a WordPress rewrite rule to the IIS 7+ configuration file.
Usage
iis7_add_rewrite_rule( $filename, $rewrite_rule );
Parameters
$filename
(string) – The file path to the configuration file.$rewrite_rule
(string) – The XML fragment with the URL Rewrite rule.
More information
See WordPress Developer Resources: iis7_add_rewrite_rule()
Examples
Adding a Basic Rewrite Rule
In this example, we’ll add a simple rewrite rule to redirect all requests to the index.php
file.
$filename = 'web.config'; $rewrite_rule = ' <rule name="WordPress" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule>'; iis7_add_rewrite_rule($filename, $rewrite_rule);
Redirecting Non-WWW to WWW
Add a rewrite rule to redirect all non-www requests to www.
$filename = 'web.config'; $rewrite_rule = ' <rule name="Redirect to www" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^example\.com$" /> </conditions> <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" /> </rule>'; iis7_add_rewrite_rule($filename, $rewrite_rule);
Force HTTPS
Add a rewrite rule to force HTTPS for all requests.
$filename = 'web.config'; $rewrite_rule = ' <rule name="Force HTTPS" enabled="true"> <match url="(.*)" ignoreCase="false" /> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule>'; iis7_add_rewrite_rule($filename, $rewrite_rule);
Redirect from One Path to Another
Add a rewrite rule to redirect requests from /old-path/
to /new-path/
.
$filename = 'web.config'; $rewrite_rule = ' <rule name="Redirect old path to new path" stopProcessing="true"> <match url="^old-path(/.*)?$" /> <action type="Redirect" url="/new-path{R:1}" redirectType="Permanent" /> </rule>'; iis7_add_rewrite_rule($filename, $rewrite_rule);
Remove File Extension
Add a rewrite rule to remove the .html
file extension from URLs.
$filename = 'web.config'; $rewrite_rule = ' <rule name="Remove .html extension" enabled="true"> <match url="^(.*)\.html$" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Rewrite" url="{R:1}" /> </rule>'; iis7_add_rewrite_rule($filename, $rewrite_rule);