Improve IIS rewrite support. Props ruslany, peaceablewhale. fixes #10386
git-svn-id: http://svn.automattic.com/wordpress/trunk@12264 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
38bcfbb49b
commit
97b5a5f483
|
@ -154,7 +154,7 @@ function iis7_save_url_rewrite_rules(){
|
|||
// Using win_is_writable() instead of is_writable() because of a bug in Windows PHP
|
||||
if ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) {
|
||||
if ( iis7_supports_permalinks() ) {
|
||||
$rule = $wp_rewrite->iis7_url_rewrite_rules();
|
||||
$rule = $wp_rewrite->iis7_url_rewrite_rules(false, '', '');
|
||||
if ( ! empty($rule) ) {
|
||||
return iis7_add_rewrite_rule($web_config_file, $rule);
|
||||
} else {
|
||||
|
@ -587,6 +587,7 @@ function iis7_add_rewrite_rule($filename, $rewrite_rule) {
|
|||
$rule_fragment->appendXML($rewrite_rule);
|
||||
$rules_node->appendChild($rule_fragment);
|
||||
|
||||
$doc->encoding = "UTF-8";
|
||||
$doc->formatOutput = true;
|
||||
saveDomDocument($doc, $filename);
|
||||
|
||||
|
|
|
@ -225,13 +225,22 @@ $structures = array(
|
|||
</p>
|
||||
</form>
|
||||
<?php if ($iis7_permalinks) :
|
||||
if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) : ?>
|
||||
if ( isset($_POST['submit']) && $permalink_structure && ! $usingpi && ! $writable ) :
|
||||
if ( file_exists($home_path . 'web.config') ) : ?>
|
||||
<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’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>/<configuration>/<system.webServer>/<rewrite>/<rules></code> element in <code>web.config</code> file.') ?></p>
|
||||
<form action="options-permalink.php" method="post">
|
||||
<?php wp_nonce_field('update-permalink') ?>
|
||||
<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>
|
||||
<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>
|
||||
</form>
|
||||
<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>
|
||||
<?php else : ?>
|
||||
<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’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>
|
||||
<form action="options-permalink.php" method="post">
|
||||
<?php wp_nonce_field('update-permalink') ?>
|
||||
<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>
|
||||
</form>
|
||||
<p><?php _e('If you temporarily make your site’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>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
<?php else :
|
||||
if ( $permalink_structure && ! $usingpi && ! $writable ) : ?>
|
||||
|
|
|
@ -1717,19 +1717,37 @@ class WP_Rewrite {
|
|||
*
|
||||
* @return string
|
||||
*/
|
||||
function iis7_url_rewrite_rules(){
|
||||
function iis7_url_rewrite_rules($add_parent_tags = false, $indent = " ", $end_of_line = "\n") {
|
||||
|
||||
if ( ! $this->using_permalinks()) {
|
||||
return '';
|
||||
}
|
||||
$rules = "<rule name=\"wordpress\" patternSyntax=\"Wildcard\">\n";
|
||||
$rules .= " <match url=\"*\" />\n";
|
||||
$rules .= " <conditions>\n";
|
||||
$rules .= " <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />\n";
|
||||
$rules .= " <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />\n";
|
||||
$rules .= " </conditions>\n";
|
||||
$rules .= " <action type=\"Rewrite\" url=\"index.php\" />\n";
|
||||
$rules .= "</rule>";
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
$rules .= $extra_indent."<rule name=\"wordpress\" patternSyntax=\"Wildcard\">".$end_of_line;
|
||||
$rules .= $extra_indent.$indent."<match url=\"*\" />".$end_of_line;
|
||||
$rules .= $extra_indent.$indent.$indent."<conditions>".$end_of_line;
|
||||
$rules .= $extra_indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" />".$end_of_line;
|
||||
$rules .= $extra_indent.$indent.$indent.$indent."<add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" />".$end_of_line;
|
||||
$rules .= $extra_indent.$indent.$indent."</conditions>".$end_of_line;
|
||||
$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>";
|
||||
}
|
||||
|
||||
$rules = apply_filters('iis7_url_rewrite_rules', $rules);
|
||||
|
||||
|
|
Loading…
Reference in New Issue