Re: Ultimate SEO 2.200 (new features) [Support Thread]
@Siem, I've modeled your settings in a local test site, setting Alternate URLs end with to blank like you have. With that setting, the default .htaccess file and enabling the language sidebox, I get a link that looks like http://localhost/testsite/index?language=en which properly displays, when clicked, the main page.
Perhaps there's a setting in your .htaccess that's a bit off; if you'd post its contents wrapped by the CODE tags (the big # above the post-writing textbox), perhaps that would provide a clue.
Re: Ultimate SEO 2.200 (new features) [Support Thread]
The contents of the .htaccess:
Code:
###############################################################################
# Add custom headers and options
###############################################################################
# Notes:
#
# Examples: Adding IE compatibility / edge flags, language and encoding flags,
# php or suphp directives, configure other Apache modules such as page_speed,
# and enable or disable Apache httpd options.
#
# Do NOT configure anything directly relating to physical or virtual resources
# in this section. These should be addressed later on in this file.
###############################################################################
#Options -Indexes
###############################################################################
# Enable mod_rewrite processing using the rules in this .htaccess file
###############################################################################
# Notes:
#
# <IfModule> should be avoided at all costs. If mod_rewrite is not available
# it is almost always better to return HTTP 500 status. This way we see there
# is an issue as soon as the .htaccess file is uploaded.
#
# For mod_rewrite to work, the Apache server option to allow symbolic links to
# be followed must be enabled. Most providers supporting mod_rewrite will
# already have it enabled for you, but if your rewrite rules are not working
# you can un-comment the first directive below to manually enable the option.
#
# Don't forget, mod_rewrite directives are processed in order until a matching
# RewriteRule with the [L] flag is encountered. So the more specific a rule is
# the closer it should appear to the top of this file.
###############################################################################
#Options +FollowSymLinks
RewriteEngine on
###############################################################################
# Tell mod_rewrite where this file is relative to the server document_root
###############################################################################
# Notes:
#
# This directive should only be enabled if this .htaccess file is not placed
# in the document_root (usually public_html, www, or web) of the (sub)domain.
#
# An easy way to determine the location relative to the server document_root is
# to look at the URL used to access a file in this folder. For example if you
# access a "page" in the same folder as this file by typing in the URL
# "www.mydomain.com/myfolder/index.html" then "myfolder" will be the location
# of this file relative to the server document_root.
#
# Another quick and easy way to determine the correct setting for this is to
# look at the defined value for DIR_WS_CATALOG and DIR_WS_HTTPS_CATALOG in
# Zen Cart's configure.php files. All three values should match.
#
# Don't forget the leading and trailing /. This directive requires both!
###############################################################################
#RewriteBase /shop/
###############################################################################
# Redirect if request was for index.php (no query)
###############################################################################
# Notes:
#
# This is only required if the site generates references to index.php with no
# parameters. This rule will force a 301 redirect to the site root when a
# request is made for "/index.php" with no query terms (?key=value).
###############################################################################
#RewriteCond %{QUERY_STRING} ^$
#RewriteRule ^index\.php$ / [R=301,L]
###############################################################################
# Add any custom 301 redirects
###############################################################################
# Notes:
#
# In general these should be few and far between. If you use a RewriteRule
# be sure to add the L flag to let Apache mod_rewrite know to stop processing
# and skip any RewriteRules defined later in the .htaccess file.
###############################################################################
###############################################################################
# Redirect if request was for index.php (with or without query)
###############################################################################
# Notes:
#
# This is a performance optimization. If the request is for index.php simply
# pass the request on and do not process any other mod_rewrite directives in
# this file.
#
# Basically this avoids the overhead of checking if index.php is a real file
# or directory (used in subsequent mod_rewrite rules) before sending the
# request to index.php.
###############################################################################
RewriteRule ^index\.php$ - [L]
###############################################################################
# Start Ultimate (SEO) URLs
###############################################################################
# Notes:
#
# You should not make any changes in this section unless you really understand
# how it will impact your web site. Mistakes can break things.
###############################################################################
# Handles the new URL formats
RewriteRule ^(.*)-c-([0-9_]+)/(.*)-p-([0-9]+)(.*)$ index\.php?main_page=product_info&products_id=$4&cPath=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-c-([0-9_]+)/(.*)-pi-([0-9]+)(.*)$ index\.php?main_page=popup_image&pID=$4&cPath=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-c-([0-9_]+)/(.*)-pr-([0-9]+)(.*)$ index\.php?main_page=product_reviews&products_id=$4&cPath=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-c-([0-9_]+)/(.*)-pri-([0-9]+)(.*)$ index\.php?main_page=product_reviews_info&products_id=$4&cPath=$2&%{QUERY_STRING} [L]
# Original (unchanged) URL formats
RewriteRule ^(.*)-p-([0-9]+)(.*)$ index\.php?main_page=product_info&products_id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-m-([0-9]+)(.*)$ index\.php?main_page=index&manufacturers_id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-pi-([0-9]+)(.*)$ index\.php?main_page=popup_image&pID=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-pr-([0-9]+)(.*)$ index\.php?main_page=product_reviews&products_id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-pri-([0-9]+)(.*)$ index\.php?main_page=product_reviews_info&products_id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-ezp-([0-9]+)(.*)$ index\.php?main_page=page&id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-c-([0-9_]+)(.*)$ index\.php?main_page=index&cPath=$2&%{QUERY_STRING} [L]
# Rewrite all other requests (if the file / directory does not exist)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index\.php?main_page=$1&%{QUERY_STRING} [L]
###############################################################################
# Add any other directives relating to the handling of physical files
###############################################################################
# Notes:
#
# If processing makes it this far, the request was for a real file or folder.
# Example: Adding further processing related to browser caching or security.
###############################################################################
I believe it is identical to the .htaccess file included in the plugin? Maybe I didn't understand everything in it and there is something here which I should change to match some other setting?
Thanks for trying to help.
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Is your Zen Cart installed in the root directory of your hosted file-system? I'm just punting here, it's lhungil that knows this stuff left, right and upside down!
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Quote:
Originally Posted by
lat9
Is your Zen Cart installed in the root directory of your hosted file-system? I'm just punting here, it's lhungil that knows this stuff left, right and upside down!
It's installed in the documentroot? The config in ......../apache2/sites-enabled/ has the directory the store is in as the root directory. I think that's what you meant?
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Yes, that's what I meant. I'm all out of questions and suggestions; let's wait for lhungil to get back as I'm sure that he'll know straight-away what's up.
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Quote:
Originally Posted by
Siem
... No info in the debug logs, the ones in /logs/ the ones in /logs/ultimate_urls/ after saying in the admin interface I want the ultimate urls debug logs turned on, and also nothing in the regular error logs elsewhere on the server.
This is very disconcerting. Can you verify the user your web server runs as has access to write to "/logs/" (usually www-data on Debian)? Can you verify the user you are using to access the web server's filesystem has read access to "/logs/" (and sub-directories and files)?
What version of PHP is in use on the web server (Zen Cart Admin -> Version)? What bridge is being used to communicate between Apache2 <==> PHP (libapache2-mod-php5, libapache2-mod-php5filter, libapache2-mod-suphp, libapache2-mod-fcgid, libapache2-mod-scgi, etc)? Is the filesystem local or accessed over a network (NFS, SMB, etc)?
Quote:
Originally Posted by
lat9
@Siem, I've modeled your settings in a local test site, setting
Alternate URLs end with to blank like you have. With that setting, the default .htaccess file and enabling the language sidebox, I get a link that looks like
http://localhost/testsite/index?language=en which properly displays, when clicked, the main page. ...
Same in all of my test environments. The following snippet found at the end of the ".htaccess" file you supplied tells mod_rewrite (Apache2) to send a request for "/index?language=en" internally to "/index.php?main_page=index&language=en".
Code:
RewriteRule ^(.*)$ index\.php?main_page=$1&%{QUERY_STRING}
It appears your server is not processing this mod_rewrite directive for some reason when the URI "/index" is requested...
Can you check your server configuration (and VirtualHost configurations) to ensure no other directives are interfering? Do you have mod_security or mod_pagespeed installed / enabled? Can you verify there are no .htaccess files in parent directories (for example if the root is set to "/var/www/www4/", check "/var/www/.htaccess"). It is not uncommon for the "default" site to cause some issues if left enabled when serving multiple name based virtual hosts from on the same server (and nesting roots).
If your server has "mod_negotiation" enabled (usually the default on Debian) and you have a directory or file starting with "index" in the root folder (other than "index.php" - rare as none are included with a stock install of Zen Cart), this can also cause issues (delete the file / folder or disable "mod_negotiation" in the first section of the .htaccess file using "Options -MultiViews").
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Hi lhungil,
It's only when I try to select another language on the homepage that there are no logs even with log enabled. For all the other pages the standard? logs are created in /logs/ultimate_urls/
Permission for /logs/ is root, permission for /logs/ultimate_urls/ is www-data. This one does have access, hence the files which are created in all other cases.
The PHP version is: 5.4.36-0+deb7u3 (Zend: 2.4.0)
The bridge between PHP and Apache2 is libapache2-mod-php5 I think? By the loaded modules is a mod_php5 which is one of the ones you mentioned?
The filesystem is local.
mod_security and mod_pagespeed are not loaded.
There are no .htaccess files in the parent directories.
mod_negotiation is enabled, but there is no other file or directory in the root directory which starts with index (other than index.php which is supposed to be there).
Changing Alternate URLS end with from nothing to .php does work. So for now I just let it stay that way.
Hope the answers make any sense to you, and thanks everyone for trying to help.
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Thank you for clarifying. Previously you said no logs at all (which would be very disconcerting). However no logs only when "/index" is requested (plus seeing an Apache default 404 page) indicates the request never reached Zen Cart (or Ultimate URLs).
The issue is not with Ultimate URLs. Something in your server setup is intercepting requests for "/index" BEFORE the RewriteRule in the .htaccess is triggered (or is overriding the rules AFTER). This will most likely be an issue caused by something in your web server's Apache configuration (or some sort of "security" or "proxying" configuration).
The csuse could be an Apache server-wide or virtualhost directive (some occur AFTER rules in .htaccess files), issues caused by nested virtual host roots, something like mod_negotiation which triggers BEFORE .htaccess rules in a .htaccess file (try disabling MultiViews as suggested), an errant DirectoryIndex configuration, some sort of proxy / security software (and configuration), and the list goes on...
As long as you are okay with it, telling Ultimate URLs to add a suffix avoids the server configuration issue (something intercepting calls to "/index" and returning a 404) should work. If you are not okay with it and need further hekp, you may want to contact the hosting provider to troubleshoot and correct the underlying cause.
NOTE 1:It appears the server is running Debian. I've been unable to duplicate the issue with a stock VM running Debian 7 or Debian 8 (Apache2 default site disabled, multiple NameVirtualHosts with unnested document roots enabled, mod_php5 or mod_fcgi).
Re: Ultimate SEO 2.200 (new features) [Support Thread]
Thank you for helping and the clear questions. That helped a lot for me.
The server we use does indeed run Debian.
I think we'll just stick to using a suffix to make everything work. Maybe some other time when I actually have time to spare I'll try to look further into what may cause our problem, what setting elsewhere on the server is stopping Ultimate URLs to work. If I do find what caused it I will tell so here, maybe that would someday help someone else.
Thank you.