Make WordPress Core

Changeset 12264


Ignore:
Timestamp:
11/23/2009 06:17:46 PM (14 years ago)
Author:
ryan
Message:

Improve IIS rewrite support. Props ruslany, peaceablewhale. fixes #10386

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/misc.php

    r11671 r12264  
    155155    if ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) {
    156156        if ( iis7_supports_permalinks() ) {
    157             $rule = $wp_rewrite->iis7_url_rewrite_rules();
     157            $rule = $wp_rewrite->iis7_url_rewrite_rules(false, '', '');
    158158            if ( ! empty($rule) ) {
    159159                return iis7_add_rewrite_rule($web_config_file, $rule);
     
    588588    $rules_node->appendChild($rule_fragment);
    589589
     590    $doc->encoding = "UTF-8";
    590591    $doc->formatOutput = true;
    591592    saveDomDocument($doc, $filename);
  • trunk/wp-admin/options-permalink.php

    r11761 r12264  
    226226  </form>
    227227<?php if ($iis7_permalinks) :
    228     if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) : ?>
     228    if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) :
     229        if ( file_exists($home_path . 'web.config') ) : ?>
    229230<p><?php _e('If your <code>web.config</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/&lt;configuration&gt;/&lt;system.webServer&gt;/&lt;rewrite&gt;/&lt;rules&gt;</code> element in <code>web.config</code> file.') ?></p>
    230231<form action="options-permalink.php" method="post">
    231232<?php wp_nonce_field('update-permalink') ?>
    232     <p><textarea rows="10" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules()); ?></textarea></p>
     233    <p><textarea rows="9" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules()); ?></textarea></p>
    233234</form>
    234235<p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.')  ?></p>
     236        <?php else : ?>
     237<p><?php _e('If the root directory of your site were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so this is the url rewrite rule you should have in your <code>web.config</code> file. Create a new file, called <code>web.config</code> in the root directory of your site. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this code into the <code>web.config</code> file.') ?></p>
     238<form action="options-permalink.php" method="post">
     239<?php wp_nonce_field('update-permalink') ?>
     240    <p><textarea rows="18" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules(true)); ?></textarea></p>
     241</form>
     242<p><?php _e('If you temporarily make your site&#8217;s root directory writable for us to generate the <code>web.config</code> file automatically, do not forget to revert the permissions after the file has been created.')  ?></p>           
     243        <?php endif; ?>
    235244    <?php endif; ?>
    236245<?php else :
  • trunk/wp-includes/rewrite.php

    r12230 r12264  
    17181718     * @return string
    17191719     */
    1720     function iis7_url_rewrite_rules(){
     1720    function iis7_url_rewrite_rules($add_parent_tags = false, $indent = "  ", $end_of_line = "\n") {
    17211721
    17221722        if ( ! $this->using_permalinks()) {
    17231723            return '';
    17241724        }
    1725         $rules  = "<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n";
    1726         $rules .= " <match url=\"*\" />\n";
    1727         $rules .= " <conditions>\n";
    1728         $rules .= "     <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n";
    1729         $rules .= "     <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n";
    1730         $rules .= " </conditions>\n";
    1731         $rules .= " <action type=\"Rewrite\" url=\"index.php\" />\n";
    1732         $rules .= "</rule>";
     1725       
     1726        $rules = '';
     1727        $extra_indent = '';
     1728        if ( $add_parent_tags ) {
     1729            $rules .= "<configuration>".$end_of_line;
     1730            $rules .= $indent."<system.webServer>".$end_of_line;
     1731            $rules .= $indent.$indent."<rewrite>".$end_of_line;
     1732            $rules .= $indent.$indent.$indent."<rules>".$end_of_line;
     1733            $extra_indent = $indent.$indent.$indent.$indent;
     1734        }
     1735       
     1736        $rules .= $extra_indent."<rule name=\"wordpress\" patternSyntax=\"Wildcard\">".$end_of_line;
     1737        $rules .= $extra_indent.$indent."<match url=\"*\" />".$end_of_line;
     1738        $rules .= $extra_indent.$indent.$indent."<conditions>".$end_of_line;
     1739        $rules .= $extra_indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />".$end_of_line;
     1740        $rules .= $extra_indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />".$end_of_line;
     1741        $rules .= $extra_indent.$indent.$indent."</conditions>".$end_of_line;
     1742        $rules .= $extra_indent.$indent."<action type=\"Rewrite\" url=\"index.php\" />".$end_of_line;
     1743        $rules .= $extra_indent."</rule>";
     1744       
     1745        if ( $add_parent_tags ) {
     1746            $rules .= $end_of_line.$indent.$indent.$indent."</rules>".$end_of_line;
     1747            $rules .= $indent.$indent."</rewrite>".$end_of_line;
     1748            $rules .= $indent."</system.webServer>".$end_of_line;
     1749            $rules .= "</configuration>";
     1750        }
    17331751
    17341752        $rules = apply_filters('iis7_url_rewrite_rules', $rules);
Note: See TracChangeset for help on using the changeset viewer.