We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 3624
    • 7 Posts
    Hi all,

    I have changed my filenames and got rid of the html, so, http://domain.com/page.html is now http://domain.com/page.html

    I have a few pages on google and don’t want to serve up an error page, so I tried to add a 301 redirect. Here is my .htaccess file:

    # MODx supports Friendly URLs via this .htaccess file. You must serve web
    # pages via Apache with mod_rewrite to use this functionality, and you must
    # change the file name from ht.access to .htaccess.
    #
    # Make sure RewriteBase points to the directory where you installed MODx.
    # E.g., "/modx" if your installation is in a "modx" subdirectory.
    #
    # You may choose to make your URLs non-case-sensitive by adding a NC directive
    # to your rule: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]
    
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    
    redirect 301 /portfolio.html http://www.domainame.com/portfolio
    
    # Make sure .htc files are served with the proper MIME type, which is critical # for XP SP2. Un-comment if your host allows htaccess MIME type overrides.
    
    #AddType text/x-component .htc
    
    
    
    # If your server is not already configured as such, the following directive
    # should be uncommented in order to set PHP's register_globals option to OFF.
    # This closes a major security hole that is abused by most XSS (cross-site
    # scripting) attacks. For more information: http://php.net/register_globals
    #
    # To verify that this option has been set to OFF, open the Manager and choose
    # Reports -> System Info and then click the phpinfo() link. Do a Find on Page
    # for "register_globals". The Local Value should be OFF. If the Master Value
    # is OFF then you do not need this directive here.
    #
    # IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
    #
    # Your server does not allow PHP directives to be set via .htaccess. In that
    # case you must make this change in your php.ini file instead. If you are
    # using a commercial web host, contact the administrators for assistance in
    # doing this. Not all servers allow local php.ini files, and they should
    # include all PHP configurations (not just this one), or you will effectively
    # reset everything to PHP defaults. Consult www.php.net for more detailed
    # information about setting PHP directives.
    
    #php_flag register_globals Off
    
    
    
    # For servers that support output compression, you should pick up a bit of
    # speed but uncommenting the following lines.
    
    #php_flag zlib.output_compression On
    #php_value zlib.output_compression_level 5
    
    
    
    # The following directives stop screen flicker in IE on CSS rollovers. If
    # needed, un-comment the following rules. When they're in place, you may have
    # to do a force-refresh in order to see changes in your designs.
    
    #ExpiresActive On
    #ExpiresByType image/gif A2592000
    #ExpiresByType image/jpeg A2592000
    #ExpiresByType image/png A2592000
    #BrowserMatch "MSIE" brokenvary=1
    #BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
    #BrowserMatch "Opera" !brokenvary
    #SetEnvIf brokenvary 1 force-no-vary
    


    When I access the portfolio.html page it redirects to the following:

    http://domain.com/portfolio?q=portfolio.html

    Appreciate any help.

    Thanks
      • 24414
      • 45 Posts
      Try this, I had the same problem and ended up URL rewriting instead:

      RewriteEngine On
      RewriteBase /
      
      RewriteRule ^portfolio.html$ /portfolio [L,NE,R=301]
      
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,PT]
      


      See @
      http://modxcms.com/forums/index.php/topic,4915.msg35476.html#msg35476
        • 3624
        • 7 Posts
        That worked a treat.... thanks.
          • 23491 ☆ A M B ☆
          • 1,056 Posts
          Interesting that I also just experienced this issue myself yesterday, only I had over 20+ URLs.

          The real cause of the issue is the accompanying ?q= parameter containing a portion of the original HTTP request. I believe the parser is being fed a nonexistent combo built of the old and new URL alias/paths.

          If PHP sees
          $_REQUEST[q]
          as an array or combined string, there likely would be value in telling the alias lookup mechanism to only interpret the first of the two.

          I don’t mind having to URL Rewrite, but would be nice to still have a choice, right? wink
            Mike Reid - www.pixelchutes.com
            MODx Ambassador / Contributor
            [Module] MultiMedia Manager / [Module] SiteSearch / [Snippet] DocPassword / [Plugin] EditArea / We support FoxyCart
            ________________________________
            Where every pixel matters.