update rewrite rules for IIS, props Frumph, see #12758

git-svn-id: http://svn.automattic.com/wordpress/trunk@14871 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
wpmuguru 2010-05-25 05:12:47 +00:00
parent 5c5a6d4d73
commit 6eb9b64e22
3 changed files with 183 additions and 87 deletions

View File

@ -336,35 +336,119 @@ define( 'BLOG_ID_CURRENT_SITE', 1 );</textarea>
?>
</li>
<?php
// Construct an htaccess file.
$htaccess_file = 'RewriteEngine On
RewriteBase ' . $base . '
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n";
if ( ! $subdomain_install )
$htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n";
$htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]';
// @todo custom content dir.
if ( ! $subdomain_install )
$htaccess_file .= "\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]';
$htaccess_file .= "\nRewriteRule . index.php [L]";
?>
<li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
<textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>">
<?php echo wp_htmledit_pre( $htaccess_file ); ?>
</textarea></li>
if (iis7_supports_permalinks()) {
if (is_subdomain_install()) {
$web_config_file =
'<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule 1" stopProcessing="true">
<match url="^index\.php$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="WordPress Rule 2" stopProcessing="true">
<match url="^files/(.+)" ignoreCase="false" />
<action type="Rewrite" url="wp-includes/ms-files.php?file={R:1}" appendQueryString="false" />
</rule>
<rule name="WordPress Rule 3" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="WordPress Rule 4" stopProcessing="true">
<match url="." ignoreCase="false" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>';
} else {
$web_config_file =
'<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule 1" stopProcessing="true">
<match url="^index\.php$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="WordPress Rule 2" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
<action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
</rule>
<rule name="WordPress Rule 3" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
<action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
</rule>
<rule name="WordPress Rule 4" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="WordPress Rule 5" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="WordPress Rule 6" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="WordPress Rule 7" stopProcessing="true">
<match url="." ignoreCase="false" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>';
}
?>
<li><p><?php printf( __( 'Add the following to your <code>web.config</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
<textarea class="code" readonly="readonly" cols="100" rows="20">
<?php echo wp_htmledit_pre( $web_config_file ); ?>
</textarea></li>
</ol>
<?php if ( !is_multisite() ) { ?>
<?php } else {
// Construct an htaccess file.
$htaccess_file = 'RewriteEngine On
RewriteBase ' . $base . '
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^' . ( $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?' ) . 'files/(.+) wp-includes/ms-files.php?file=$' . ( $subdomain_install ? 1 : 2 ) . ' [L]' . "\n";
if ( ! $subdomain_install )
$htaccess_file .= "\n# add a trailing slash to /wp-admin\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]' . "\n";
$htaccess_file .= "\n" . 'RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]';
// @todo custom content dir.
if ( ! $subdomain_install )
$htaccess_file .= "\n" . 'RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]';
$htaccess_file .= "\nRewriteRule . index.php [L]";
?>
<li><p><?php printf( __( 'Add the following to your <code>.htaccess</code> file in <code>%s</code>, replacing other WordPress rules:' ), ABSPATH ); ?></p>
<textarea class="code" readonly="readonly" cols="100" rows="<?php echo $subdomain_install ? 11 : 16; ?>">
<?php echo wp_htmledit_pre( $htaccess_file ); ?>
</textarea></li>
</ol>
<?php }
if ( !is_multisite() ) { ?>
<p><?php printf( __( 'Once you complete these steps, your network is enabled and configured. You will have to log in again.') ); ?> <a href="<?php echo esc_url( site_url( 'wp-login.php' ) ); ?>"><?php _e( 'Log In' ); ?></a></p>
<?php
}

View File

@ -1302,7 +1302,7 @@ function signup_nonce_check( $result ) {
function maybe_redirect_404() {
global $current_site;
if ( is_main_site() && is_404() && defined( 'NOBLOGREDIRECT' ) && ( $destination = NOBLOGREDIRECT ) ) {
if ( ( !defined( 'NO404REDIRECT' ) || ! NO404REDIRECT ) && is_main_site() && is_404() && defined( 'NOBLOGREDIRECT' ) && ( $destination = NOBLOGREDIRECT ) ) {
if ( $destination == '%siteurl%' )
$destination = network_home_url();
wp_redirect( $destination );

View File

@ -1757,10 +1757,16 @@ class WP_Rewrite {
if ( ! $this->using_permalinks() )
return '';
$rules = '';
$extra_indent = '';
if ( $add_parent_tags ) {
$rules .= "<configuration>".$end_of_line;
$rules .= $indent."<system.webServer>".$end_of_line;
$rules .= $indent.$indent."<rewrite>".$end_of_line;
$rules .= $indent.$indent.$indent."<rules>".$end_of_line;
$extra_indent = $indent.$indent.$indent.$indent;
}
if ( !is_multisite() ) {
$rules = '';
$extra_indent = '';
if ( $add_parent_tags ) {
$rules .= "<configuration>".$end_of_line;
$rules .= $indent."<system.webServer>".$end_of_line;
@ -1778,63 +1784,69 @@ class WP_Rewrite {
$rules .= $extra_indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line;
$rules .= $extra_indent."</rule>";
if ( $add_parent_tags ) {
$rules .= $end_of_line.$indent.$indent.$indent."</rules>".$end_of_line;
$rules .= $indent.$indent."</rewrite>".$end_of_line;
$rules .= $indent."</system.webServer>".$end_of_line;
$rules .= "</configuration>";
}
} else {
$siteurl = get_option( 'siteurl' );
$siteurl_len = strlen( $siteurl );
if ( substr( WP_CONTENT_URL, 0, $siteurl_len ) == $siteurl && strlen( WP_CONTENT_URL ) > $siteurl_len )
$content_path = substr( WP_CONTENT_URL, $siteurl_len + 1 );
else
$content_path = 'wp-content';
$rules = '<rule name="wordpress - strip index.php" stopProcessing="false">
<match url="^index.php/(.*)$" />
<action type="Rewrite" url="{R:1}" />
</rule>
<rule name="wordpress - 1" stopProcessing="true">
<match url="^(.*/)?files/$" />
<action type="Rewrite" url="index.php" />
</rule>
<rule name="wordpress - 2" stopProcessing="true">
<match url="^(.*/)?files/(.*)" />
<conditions>
<add input="{REQUEST_URI}" negate="true" pattern=".*' . $content_path . '/plugins.*"/>
</conditions>
<action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
</rule>
<rule name="wordpress - 3" stopProcessing="true">
<match url="^(.+)$" />
<conditions>
<add input="{REQUEST_URI}" pattern="^.*/wp-admin$" />
</conditions>
<action type="Redirect" url="{R:1}/" redirectType="Permanent" />
</rule>
<rule name="wordpress - 4" stopProcessing="true">
<match url="."/>
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" pattern="" />
</conditions>
<action type="None" />
</rule>
<rule name="wordpress - 5" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(wp-.*)" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="wordpress - 6" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="wordpress - 7" stopProcessing="true">
<match url="." />
<action type="Rewrite" url="index.php" />
</rule>';
if (is_subdomain_install()) {
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 1\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^index\.php$\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 2\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^files/(.+)\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"wp-includes/ms-files.php?file={R:1}\" appendQueryString=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 3\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<conditions logicalGrouping=\"MatchAny\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."</conditions>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 4\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\".\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
} else {
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 1\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^index\.php$\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 2\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?files/(.+)\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"wp-includes/ms-files.php?file={R:2}\" appendQueryString=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 3\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?wp-admin$\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Redirect\" url=\"{R:1}wp-admin/\" redirectType=\"Permanent\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 4\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<conditions logicalGrouping=\"MatchAny\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."</conditions>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"None\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 5\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"{R:2}\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 6\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\"^([_0-9a-zA-Z-]+/)?(.*\.php)$\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"{R:2}\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."<rule name=\"wordpress - Rule 7\" stopProcessing=\"true\">".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<match url=\".\" ignoreCase=\"false\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line;
$rules .= $extra_indent.$indent.$indent.$indent.$indent."</rule>".$end_of_line;
}
}
if ( $add_parent_tags ) {
$rules .= $end_of_line.$indent.$indent.$indent."</rules>".$end_of_line;
$rules .= $indent.$indent."</rewrite>".$end_of_line;
$rules .= $indent."</system.webServer>".$end_of_line;
$rules .= "</configuration>";
}
$rules = apply_filters('iis7_url_rewrite_rules', $rules);
return $rules;