WordPress.org

Make WordPress Core

Ticket #10386: 10386.patch

File 10386.patch, 4.6 KB (added by ruslany, 9 years ago)

Patch with proposed fix.

  • wp-admin/options-permalink.php

     
    222222</p>
    223223  </form>
    224224<?php if ($iis7_permalinks) :
    225         if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) : ?>
     225        if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) :
     226                if ( file_exists($home_path . 'web.config') ) : ?>
    226227<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>
    227228<form action="options-permalink.php" method="post">
    228229<?php wp_nonce_field('update-permalink') ?>
    229         <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>
     230        <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>
    230231</form>
    231232<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>
     233                <?php else : ?>
     234<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>
     235<form action="options-permalink.php" method="post">
     236<?php wp_nonce_field('update-permalink') ?>
     237        <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>
     238</form>
     239<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>                   
     240                <?php endif; ?>
    232241        <?php endif; ?>
    233242<?php else :
    234243        if ( $permalink_structure && ! $usingpi && ! $writable ) : ?>
  • wp-includes/rewrite.php

     
    17151715         *
    17161716         * @return string
    17171717         */
    1718         function iis7_url_rewrite_rules(){
     1718        function iis7_url_rewrite_rules($add_parent_tags = false){
    17191719
    17201720                if ( ! $this->using_permalinks()) {
    17211721                        return '';
    17221722                }
    1723                 $rules  = "<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n";
    1724                 $rules .= "     <match url=\"*\" />\n";
    1725                 $rules .= "     <conditions>\n";
    1726                 $rules .= "             <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n";
    1727                 $rules .= "             <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n";
    1728                 $rules .= "     </conditions>\n";
    1729                 $rules .= "     <action type=\"Rewrite\" url=\"index.php\" />\n";
    1730                 $rules .= "</rule>";
     1723               
     1724                $rules = '';
     1725                $indent = '';
     1726                if ( $add_parent_tags ) {
     1727                        $rules .= "<configuration>\n";
     1728                        $rules .= "  <system.webServer>\n";
     1729                        $rules .= "    <rewrite>\n";
     1730                        $rules .= "      <rules>\n";
     1731                        $indent = "        ";
     1732                }
     1733               
     1734                $rules .= $indent."<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n";
     1735                $rules .= $indent."  <match url=\"*\" />\n";
     1736                $rules .= $indent."  <conditions>\n";
     1737                $rules .= $indent."    <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n";
     1738                $rules .= $indent."    <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n";
     1739                $rules .= $indent."  </conditions>\n";
     1740                $rules .= $indent."  <action type=\"Rewrite\" url=\"index.php\" />\n";
     1741                $rules .= $indent."</rule>";
     1742               
     1743                if ( $add_parent_tags ) {
     1744                        $rules .= "\n      </rules>\n";
     1745                        $rules .= "    </rewrite>\n";
     1746                        $rules .= "  </system.webServer>\n";
     1747                        $rules .= "</configuration>\n";                 
     1748                }
    17311749
    17321750                $rules = apply_filters('iis7_url_rewrite_rules', $rules);
    17331751