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

    Recently a few sites were moved to a new server. After some trouble I managed to get them all working again by installing/updating them in ModX 2.5.1-pl.

    Now I have this odd problem, URL's like www.domain.nl/contact are working fine if enter them in the URL address bar of my browser. But all internal links that were in the orginal website are not FURL's, e.g. www.domain.nl/index.php?id=2

    I think it's the .htaccess that's the problem, but I lack the expertise to know how to fix it:

    # 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]
    
    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} !^(www)\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    
    # Friendly URLs Part
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} .
    # Force all pages to go to www.domain.com for SEO
    RewriteCond %{HTTP_HOST} !^www\.spelerij\.nl [NC]
    RewriteRule (.*) http://www.spelerij.nl/$1 [R=301,L]
    
    # Friendly URLs
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    
    # Additional Settings Follow
    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
    
    # 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/$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
    es 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
    
    RewriteEngine on
    


    This question has been answered by applepi. See the first response.

      • 33238
      • 388 Posts
      Mate try this one:
      but normally is a setting or a file, try edit the .htaccess with notepad an not directly from the cpanel, I use notepad++ I had some problems with the editor too.

      
      # 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 /
      
      # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
      #RewriteCond %{HTTP_HOST} .
      #RewriteCond %{HTTP_HOST} !^domain\.com [NC]
      #RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
      #RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
      #RewriteRule (.*) http://domain.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\.example-domain-please-change\.com [NC]
      #RewriteRule (.*) http://www.example-domain-please-change.com/$1 [R=301,L]
      
      # ----------------------------------------------------------------------
      # REDIRECT
      # ----------------------------------------------------------------------
      #
      #RewriteRule ^example.html$ http://domain.com/example.html [L,NC,R=301]
      
      # redirect all requests to /en/favicon.ico and /es/favicon.ico
      # to /favicon.ico
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
      RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
      RewriteRule ^(en|es)/favicon.ico$ favicon.ico [L,QSA]
        
      # redirect all requests to /en/assets* and /es/assets* to /assets*
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
      RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
      RewriteRule ^(en|es)/assets(.*)$ assets$2 [L,QSA]
        
      # redirect all other requests to /en/* and /es/*
      # to index.php and set the cultureKey parameter
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
      RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
      RewriteRule ^(en|es)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
      
      <ifModule mod_gzip.c>
        mod_gzip_on Yes
        mod_gzip_dechunk Yes
        mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
        mod_gzip_item_include handler ^cgi-script$
        mod_gzip_item_include mime ^text/.*
        mod_gzip_item_include mime ^application/x-javascript.*
        mod_gzip_item_exclude mime ^image/.*
        mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
      </ifModule>
      
      <ifModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 seconds"
        ExpiresByType text/html "access plus 1 seconds"
        ExpiresByType image/gif "access plus 2592000 seconds"
        ExpiresByType image/jpeg "access plus 2592000 seconds"
        ExpiresByType image/png "access plus 2592000 seconds"
        ExpiresByType text/css "access plus 2592000 seconds"
        ExpiresByType text/javascript "access plus 2592000 seconds"
        ExpiresByType application/x-javascript "access plus 2592000 seconds"
      </ifModule>
      
      <ifModule mod_headers.c>
        <FilesMatch "\.(ico|svg|woff|woff2|eot|ttf)$">
        Header set Cache-Control "max-age=31536000, public"
        </FilesMatch>
        <filesMatch "\.(pdf|flv|jpg|jpeg|png|gif|swf)$">
          Header set Cache-Control "max-age=2592000, public"
        </filesMatch>
        <filesMatch "\.(css)$">
          Header set Cache-Control "max-age=2592000, public"
        </filesMatch>
        <filesMatch "\.(js)$">
          Header set Cache-Control "max-age=2592000, private"
        </filesMatch>
        <filesMatch "\.(xml|txt)$">
          Header set Cache-Control "max-age=2592000, public, must-revalidate"
        </filesMatch>
        <filesMatch "\.(html|htm|php)$">
          Header set Cache-Control "max-age=1, private, must-revalidate"
        </filesMatch>
      </ifModule>
      
      # compresses text, html, javascript, css, xml:
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE application/javascript
      AddOutputFilterByType DEFLATE application/x-javascript
      
      <ifModule mod_headers.c>
        Header unset ETag
      </ifModule>
      FileETag None
      
      <ifModule mod_headers.c>
        Header unset Last-Modified
      </ifModule>
      
      <ifModule mod_headers.c>
          Header set Connection keep-alive
      </ifModule>
      
      # php -- BEGIN cPanel-generated handler, do not edit
      # Set the “ea-php56” package as the default “PHP” programming language.
      <IfModule mime_module>
        AddType application/x-httpd-ea-php56 .php .php5 .phtml
      </IfModule>
      # php -- END cPanel-generated handler, do not edit
      
      
      
        --
        ysanmiguel.com
        • 42094
        • 24 Posts
        Quote from: Ysanmiguel at Jan 17, 2017, 05:54 PM
        Mate try this one:
        but normally is a setting or a file, try edit the .htaccess with notepad an not directly from the cpanel, I use notepad++ I had some problems with the editor too.

        @Ysanmiguel, thanks for the code, but it didn't fix the problem. Maybe it's not the .htaccess, maybe the URL's in the excisting resources were reset during the installation of ModX 2.5.1(?)
          • 38783
          • 571 Posts
          You appear to have repeated the FURL part of the .htaccess file.

          I am assuming you have renamed the file from ht.access to .htaccess

          Lines 24-27 read

          # Friendly URLs
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
          


          Lines 44-47 also read
          # The Friendly URLs part
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
          


          I would suggest that you remove (or comment out) lines 44-47 as duplicating instructions in .htaccess files can have strange results.

          Looking at your site I see that the problem does not affect all internal urls. If you click on the link in paragraph two of the home page you are taken to:
          http://www.spelerij.nl/de-uitvinderij/

          The menu on the right hand side of the page with the main links is affected by the problem. So following the link to De Uitvinderij from the menu takes you to http://www.spelerij.nl/index.php?id=16. The same page with a non friendly url.

          So if my suggestion with the .htaccess file does not work maybe it would be worth looking at how the navigation menu is coded?
            If I help you out on these forums I would be very grateful if you would consider rating me on Trustpilot: https://uk.trustpilot.com/review/andytough.com

            email: [email protected] | website: https://andytough.com
            • 42094
            • 24 Posts
            Hi Andytough,

            Thanks for your post. I noticed the duplication as well and removed it, but it gave an error 500. So I don't think that the problem.


            Quote from: andytough at Jan 19, 2017, 11:15 PM

            I would suggest that you remove (or comment out) lines 44-47 as duplicating instructions in .htaccess files can have strange results.

            Looking at your site I see that the problem does not affect all internal urls. If you click on the link in paragraph two of the home page you are taken to:
            http://www.spelerij.nl/de-uitvinderij/

            The menu on the right hand side of the page with the main links is affected by the problem. So following the link to De Uitvinderij from the menu takes you to http://www.spelerij.nl/index.php?id=16. The same page with a non friendly url.

            So if my suggestion with the .htaccess file does not work maybe it would be worth looking at how the navigation menu is coded?
              • 22840
              • 1,572 Posts
              How are your menu's being built ? can you post any calls to the menus and the chunks being used so we can see the code
              • discuss.answer
                • 42094
                • 24 Posts
                Quote from: paulp at Jan 20, 2017, 10:00 AM
                How are your menu's being built? can you post any calls to the menus and the chunks being used so we can see the code

                Good call, I checked the navigation chunk and found out my URL's were somehow changed in 'index.php?id=2'etc.

                    <li class="navItem navSpelerij"><a href="index.php?id=2">De Spelerij</a></li>
                    <li class="navItem navUitvinderij"><a href="index.php?id=16">De Uitvinderij</a></li>
                


                And changed it back to:

                    <li class="navItem navSpelerij"><a href="[[~2]]">De Spelerij</a></li>
                    <li class="navItem navUitvinderij"><a href="[[~16]]">De Uitvinderij</a></li>
                


                Thanks!!!