Fixing wordpress WP ROCKET messed up rewriten .htaccess

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fixing wordpress WP ROCKET messed up rewriten .htaccess

    I have recently had some problems with a wordpress website on which i'm working ,
    i have installed wp-rocket and recently found my site "dead" with loop issue ,
    i was like "what the hell happent" ?

    Enabled debug from config no error .. hmm thinking , must be server side , lets check .htaccess , well yeah .. that was the issue , messed up rewrite lines , incomplete lines and so on , that's because the "dumb" developers of the plugin chosed to write their own "write to htaccess rulles" function ,
    wordpress already has that function built in so you can add rulles with markers .

    Here are the modified functions from wp-rocket htaccess.php file that writes rulles on htaccess , you can find it in :

    /wp-content/plugins/wp-rocket/inc/front/htaccess.php

    PHP Code:

    function flush_rocket_htaccess$force false )
    {
        if ( ! 
    $GLOBALS['is_apache'] ) {
            return;
        }
        
        global 
    $wp_rewrite;

        
    $rules '';

        
    $home_path get_home_path();
        
        
    $htaccess_file $home_path.'.htaccess';
     
        
    /*
         * If the file doesn't already exist check for write access to the directory
         * and whether we have some rules. Else check for write access to the file.
         */
        
    if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) {
        
            if ( 
    got_mod_rewrite() ) {
            
            if ( 
    $force === false ) {
                
    $rules get_rocket_htaccess_marker();
            }
            
            return 
    insert_with_markers$htaccess_file'WP Rocket'$rules );

            }
        }
        
            
    // Update the .htacces file
            //rocket_put_content( $htaccess_file, $rules . $ftmp );
    }

    /**
     * Return the markers for htacces rules
     *
     * @since 1.0
     *
     * @return string $marker Rules that will be printed
     */
    function get_rocket_htaccess_marker()
    {

            
    $marker  get_rocket_htaccess_charset();
            
    $marker .= get_rocket_htaccess_etag();
            
    $marker .= get_rocket_htaccess_web_fonts_access();
            
    $marker .= get_rocket_htaccess_files_match();
            
    $marker .= get_rocket_htaccess_mod_expires();
            
    $marker .= get_rocket_htaccess_mod_deflate();
            
            
    /** This filter is documented in inc/front/process.php */
            
            
    if ( apply_filters'do_rocket_generate_caching_files'true ) ) {
            
    $marker .= get_rocket_htaccess_mod_rewrite();    
            }
        
            
            
    $rules explode"\n"$marker );

                
        
    /**
         * Filter rules added by WP Rocket in .htaccess
         *
         * @since 2.1
         *
         * [USER="20491"]param[/USER] string $marker The content of all rules
        */
        
        
    $rules apply_filters('rocket_htaccess_marker' $rules );

        return 
    $rules;

    enjoy and have a nice day , i'm out !




    It seems that they need to add their htaccess lines before others so the compression could work as it should, here are the modified functions :

    PHP Code:

    /* for testing purposes , create a htaccess file with the following 


    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

    # BEGIN otherewritedemo
    # END otherewritedemo


    */
        
        
        


      /* bellow you have the modified + added functions */

     
      /*added modified native worpdress insert htaccess function */
      
     
    function wprocket_insert_with_markers$filename$marker$insertion ) {
        if (!
    file_exists$filename ) || is_writeable$filename ) ) {
            if (!
    file_exists$filename ) ) {
                
    $markerdata '';
            } else {
                
    $markerdata explode"\n"implode''file$filename ) ) );
            }

            if ( !
    $f = @fopen$filename'w' ) )
                return 
    false;

            
    $foundit false;
            if ( 
    $markerdata ) {
                
    $state true;
                
    $add_at_bottom="";
                
                foreach ( 
    $markerdata as $n => $markerline ) {
                    if (
    strpos($markerline'# BEGIN ' $marker) !== false)
                        
    $state false;
                    if ( 
    $state ) {
                        
    /* build already existing lines list */
                        
    if ( $n count$markerdata ) )
                            
    $add_at_bottom .="{$markerline}\n";
                            
                        else
                            
    $add_at_bottom .="{$markerline}";
                    }
                    if (
    strpos($markerline'# END ' $marker) !== false) {
                        
    fwrite$f"# BEGIN {$marker}\n" );
                        if ( 
    is_array$insertion ))
                            foreach ( 
    $insertion as $insertline )
                                
    fwrite$f"{$insertline}\n" );
                        
    fwrite$f"# END {$marker}\n" );
                        
    $state true;
                        
    $foundit true;
                    }
                }
                
            }
            if (!
    $foundit) {
                
    fwrite$f"\n# BEGIN {$marker}\n" );
                foreach ( 
    $insertion as $insertline )
                    
    fwrite$f"{$insertline}\n" );
                
    fwrite$f"# END {$marker}\n" );
            }
            
            
    /* add them at the bottom */
            
    @fwrite$f$add_at_bottom );
                
            
    fclose$f );
            return 
    true;
        } else {
            return 
    false;
        }
    }
     
     
    function 
    flush_rocket_htaccess$force false )
    {
        if ( ! 
    $GLOBALS['is_apache'] ) {
            return;
        }
        
        global 
    $wp_rewrite;
        
        
    $rules '';

        
    $home_path get_home_path();
        
        
    $htaccess_file $home_path.'.htaccess';
     
        
    /*
         * If the file doesn't already exist check for write access to the directory
         * and whether we have some rules. Else check for write access to the file.
         */
        
    if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) {
        
            if ( 
    got_mod_rewrite() ) {
            
            if ( 
    $force === false ) {
                
    $rules get_rocket_htaccess_marker();
            }
            
            
    $return wprocket_insert_with_markers$htaccess_file'WP Rocket'$rules );
            
            
            return 
    $return;

            }
        }
        
    }

    /**
     * Return the markers for htacces rules
     *
     * @since 1.0
     *
     * @return string $marker Rules that will be printed
     */
     

    function get_rocket_htaccess_marker()
    {

            
    $marker  get_rocket_htaccess_charset();
            
    $marker .= get_rocket_htaccess_etag();
            
    $marker .= get_rocket_htaccess_web_fonts_access();
            
    $marker .= get_rocket_htaccess_files_match();
            
    $marker .= get_rocket_htaccess_mod_expires();
            
    $marker .= get_rocket_htaccess_mod_deflate();
            
            
    /** This filter is documented in inc/front/process.php */
            
            
    if ( apply_filters'do_rocket_generate_caching_files'true ) ) {
            
    $marker .= get_rocket_htaccess_mod_rewrite();    
            }

            
            
    $rules explode"\n"$marker );

                
        
    /**
         * Filter rules added by WP Rocket in .htaccess
         * 
         * @since 2.1
         *
         * [USER="20491"]param[/USER] string $marker The content of all rules
        */
        
        
    $rules apply_filters('rocket_htaccess_marker' $rules );

        return 
    $rules;

    Last edited by just_m3.; 01.10.15, 17:01.

  • #2
    Its a big script so no wonder why they wrote their own... Nice catch mate.

    Comment

    Working...
    X