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

    [Using MODx Revolution 2.0.6 on Apache Server.]

    I’ve read reams of forum posts both here and on other sites regarding friendly URLs and their implementation, but I continue to fight when implementing them on my site.

    I did everything stipulated in this Wiki entry: http://rtfm.modx.com/display/revolution20/Using+Friendly+URLs
    but all I get are error 404s - page not found. If I then turn off friendly URLs in the MODx manager the site works ok, so it seems as if my .htaccess file is being ignored.

    The file itself is in the root of the site and the MODx installation is in a subdirectory /modx/.

    Does anyone have any ideas on things I could check before I pull all my hair out!

    Many thanks in advance,
    Tony.

    The .htaccess file as it stands (I’ve substituted the real domain name for MYDOMAIN) is as follows:

    # 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]
    
    RewriteEngine On
    RewriteBase /modx/
    
    
    
    # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
    #RewriteCond %{HTTP_HOST} .
    #RewriteCond %{HTTP_HOST} !^example-domain-please-change\.com [NC]
    #RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L]
    #
    # or for the opposite domain.com -> www.domain.com use the following
    # DO NOT USE BOTH
    #
    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} !^www\.MYDOMAIN\.co.uk [NC]
    RewriteRule (.*) http://www.MYDOMAIN.co.uk/$1 [R=301,L]
    
    
    
    # Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
    # https://www.domain.com when your cert only allows https://secure.domain.com
    #RewriteCond %{SERVER_PORT} !^443
    #RewriteRule (.*) https://example-domain-please-change.com.com/$1 [R=301,L]
    
    
    
    # The Friendly URLs part
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    
    # 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 by un-commenting 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
    


      • 9873
      • 14 Posts
      Hi again,

      As an update to my last message, I found that my 404 problem was due to the .htaccess file on the server. It was in conflict with an existing .htaccess file used for a different purpose and the friendly url .htaccess file was being ignored. I’ve now combined the files and that ’page not found’ problem has been solved, but I am still having a problem however...

      Although I am being given no error in the browser and the friendly url is correct as it appears in the address bar, no matter what page in the site I click on the only page that is served is the home page.

      Looking at my server error log I see the following error (the IP address and real domain name have been altered):
      [Thu Dec 30 16:14:49 2010] [error] [client xx.xxx.xxx.xxx] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ’LimitInternalRecursion’ to increase the limit if necessary. Use ’LogLevel debug’ to get a backtrace., referer: http://www.MYDOMAIN.co.uk/modx/

      Can anyone shed any light on what this means?

      If you need to look at my existing .htaccess file, here it is (again the domain name has been changed):
      # 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]
      
      RewriteEngine On
      RewriteBase /modx/
      
      
      
      # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
      #RewriteCond %{HTTP_HOST} .
      #RewriteCond %{HTTP_HOST} !^example-domain-please-change\.com [NC]
      #RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L]
      #
      # or for the opposite domain.com -> www.domain.com use the following
      # DO NOT USE BOTH
      #
      RewriteCond %{HTTP_HOST} .
      RewriteCond %{HTTP_HOST} !^www\.MYDOMAIN\.co.uk [NC]
      RewriteRule (.*) http://www.MYDOMAIN.co.uk/$1 [R=301,L]
      
      
      
      # Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
      # https://www.domain.com when your cert only allows https://secure.domain.com
      #RewriteCond %{SERVER_PORT} !^443
      #RewriteRule (.*) https://example-domain-please-change.com.com/$1 [R=301,L]
      
      
      
      # The Friendly URLs part
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
      
      # 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 by un-commenting 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