Hallo,
erstmal die
Kurzfassung meiner Frage:
Wenn ich einen Artikel in meinem Shop öffne der gelöscht wurde oder nicht existiert, dann leitet mein Shop auf die Startseite um, nicht auf die 404 Seite.
Habt ihr vielleicht noch eine Lösung, wo ich nachschauen kann - das wenn ein Artikel nicht mehr vorhanden ist oder eben eine falsche / nicht vorhandene Artikel ID aufgerufen wird - der Shop dann auf 404 Umleitet statt zu Startseite?
Hier die
lange Fassung. Entschuldigung vorab wenn es zu viel ist, a
ber wenn ihr euch schon die Mühe macht mir zu helfen, da dachte ich mir das ich im gegenzug soviel Input wie Möglich zur Verfügung stelle.
Google hat mich heute per E-Mail auf folgendes aufmerksam gemacht:
"Der Googlebot hat eine erhebliche Zunahme der Anzahl der URLs von
http://www.unserShop.tld/ festgestellt, die den Fehler "404 (nicht
gefunden)" zurückgeben sollten, es aber momentan nicht tun."
Ich habe mir das dann angeschaut und folgendes Festgestellt:
Rufe ich einen Artikel wie folgt auf:
http://www.unserShop.tld/HauptKategorie/UnterKategorie/ArtikelBeschreibung--95277.htmldann lande ich auf der Startseite des Shops.
Der Artikel existiert nicht mehr. Er wurde vor Wochen gelöscht.
Rufe ich zu Testzwecken die Seite wie folgt auf:
http://www.unserShop.tld/HauptKategorie/UnterKategorie/ArtikelBeschreibung--95277.htmalso .htm statt .html - so leitet er auf die 404 Seite.
Das gilt auch für alles andere an Datei Endungen wie .php ect.
Diese werden zu 404 Umgeleitet.
Erst dachte ich, es läge an der html Endung.
Wenn ich aber den Artikel ohne die Artikel ID am Ende aufrufe:
http://www.unserShop.tld/HauptKategorie/UnterKategorie/ArtikelBeschreibung.htmldann lande ich auch auf der 404 Seite.
Ich fragte mich ob dies nur bei gelöschten Artikel so ist.
Also habe ich eine fiktive Artikel ID angegeben, aber auch dann kommt die Umleitung zur Startseite:
http://www.unserShop.tld/HauptKategorie/UnterKategorie/ArtikelBeschreibung--000000.htmlIch hatte dann meine .htaccess in Vermutung.
Hier der Inhalt:
# Scripte Laufzeit
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time
5000php_value max_input_time
2000php_value memory_limit 256M
# phpschutz
AddHandler php54
-cgi
.php
# Error.log
php_flag log_errors on
php_value
error_log "/www/htdocs/****/*****/error/errorlog.txt"# Ländersperre
<IfModule mod_geoip
.c
> GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE
(CN
) BlockCountry
Deny from env
=BlockCountry
</IfModule
>#====================================================================================================
# Badbots blockieren [Letzte Aktualisierung: 16.08.2015]
#====================================================================================================
RewriteCond
%{HTTP_USER_AGENT
} MJ12bot
/v1
.4
.5
[OR
]RewriteCond
%{HTTP_USER_AGENT
} Majestic
-SEO
[OR
]RewriteCond
%{HTTP_USER_AGENT
} MJ12bot
[OR
]RewriteCond
%{HTTP_USER_AGENT
} SEOkicks
-Robot
[OR
]RewriteCond
%{HTTP_USER_AGENT
} c7
.seokicks
.de
[OR
]RewriteCond
%{HTTP_USER_AGENT
} TwengaBot
-2.0 [OR
]RewriteCond
%{HTTP_USER_AGENT
} Cliqzbot
/0.1 [OR
]RewriteCond
%{HTTP_USER_AGENT
} Cliqzbot
[OR
]RewriteCond
%{HTTP_USER_AGENT
} updown_tester
[OR
]RewriteCond
%{HTTP_USER_AGENT
} SISTRIX
RewriteRule ^
- [F
,L
]<Limit GET POST HEAD
>order allow
,deny
deny from
117.136allow from all
</Limit
>##-- $Id: .htaccess 3209 2012-07-12 11:51:11Z gtb-modified $
##-- Default charset
#AddDefaultCharset UTF-8
AddDefaultCharset ISO
-8859-15##-- Disable the server signature
ServerSignature Off
##-- Turn off ETags in HTTP-header (use both directives)
<IfModule mod_headers
.c
> Header unset ETag
</IfModule
>FileETag None
##-- When caching of gzipped JS and CSS files is used, enable this setting
#<IfModule mod_headers.c>
# Header set Vary Accept-Encoding
#</IfModule>
##-- when using Provider 1&1 set the following lines to activate PHP5
#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php
# Disable directory browsing (disabled by default as this causes problems on some servers)
#Options All -Indexes
##-- Enable the compression for any type of content
#<IfModule mod_deflate.c>
# <FilesMatch "\\.(js|css|html|htm|php|xml|jpg|jpeg|png|gif)$">
# SetOutputFilter DEFLATE
# </FilesMatch>
#</IfModule>
##-- Customization of HTTP request and response headers
<IfModule mod_headers
.c
> <FilesMatch
"\\.(ico|jpe?g|png|gif|swf|flv)$"> Header set Cache
-Control
"max-age=2592000, public" </FilesMatch
> <FilesMatch
"\\.(css)$"> Header set Cache
-Control
"max-age=604800, public" </FilesMatch
> <FilesMatch
"\\.(js)$"> Header set Cache
-Control
"max-age=216000, private" </FilesMatch
> <FilesMatch
"\\.(xml|txt)$"> Header set Cache
-Control
"max-age=216000, public, must-revalidate" </FilesMatch
> <FilesMatch
"\\.(html|htm|php)$"> Header set Cache
-Control
"max-age=1, private, must-revalidate" </FilesMatch
></IfModule
>##-- Generation of Expires and Cache-Control HTTP headers
<IfModule mod_expires
.c
> ExpiresActive On
ExpiresDefault
"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
/html
"access plus 1 seconds" ExpiresByType text
/css
"access plus 604800 seconds" ExpiresByType text
/javascript
"access plus 216000 seconds" ExpiresByType application
/x
-javascript
"access plus 216000 seconds"</IfModule
>##-- Configure php_flags if necessary
##-- BEGIN - use IfModule clause if PHP runs in CGI mode, otherwise just uncomment the lines with php_flag...
#<IfModule mod_php.c>
##-- Warn when arguments are passed by reference at function call time (from PHP5 allow_call_time_pass_reference is deprecated)
#php_flag allow_call_time_pass_reference on
##-- Disable transparent sid support PHP-default is off (XTC Session only on first visit)
#php_flag session.use_trans_sid off
##-- set suhosin flags because of errors with attributes (for webhosters with suhosin hardening patch enabled)
#php_value suhosin.post.max_array_depth 0
#php_value suhosin.post.max_array_index_length 0
#php_value suhosin.post.max_vars 0
#php_value suhosin.request.max_array_depth 0
#php_value suhosin.request.max_array_index_length 0
#php_value suhosin.request.max_vars 0
##-- set suhosin flags to have unencrypted session data, affecting "whos_online" & "shopping cart" (for webhosters with suhosin hardening patch enabled)patch enabled
#php_value suhosin.session.encrypt Off
#php_value suhosin.session.cryptkey ''
##-- END - use IfModule clause if PHP runs in CGI mode, otherwise just uncomment the lines with php_flag...
#</IfModule>
##-- Redirect error pages to Sitemap
##-- set the correct Path to ErrorDocument
ErrorDocument
400 /?error
=400ErrorDocument
401 /?error
=401ErrorDocument
402 /?error
=402ErrorDocument
403 /?error
=403ErrorDocument
404 /404.html
ErrorDocument
500 /?error
=500<FilesMatch
"\.(gif|jpe?g|png)$"> ErrorDocument
404 /404.jpg
</FilesMatch
>##-----------------------------------------
##- SEO Shopstat Modul (Hartmut Koenig)
##-----------------------------------------
<IfModule mod_rewrite
.c
> ##-- Initialize and enable rewrite engine
##-- Documentation http://httpd.apache.org/docs/misc/rewriteguide.html
RewriteEngine On
##-- EXAMPLE: If your shop is located at "http://www.yourdomain.com/shop",
##-- set the following line like e.g.: RewriteBase /shop/
RewriteBase
/ ##-- Use canonical URLs
##-- redirect to www-domain, when www is missing and no subdomain given and not using an ssl-proxy
##-- HostEurope
#RewriteCond %{HTTP:X-Forwarded-Server} !^ssl\.webpack\.de$ [NC]
##-- 1und1
#RewriteCond %{HTTP:X-Forwarded-Server} !^ssl\.kundenserver\.de$ [NC]
##-- domainFACTORY
#RewriteCond %{HTTP:X-Forwarded-Server} !^sslsites\.de$ [NC]
##-- All-Inkl
#RewriteCond %{HTTP:X-Forwarded-Server} !^ssl-account\.com$ [NC]
##-- Strato
#RewriteCond %{HTTP:X-Forwarded-Server} !^www\.ssl-id\.de$ [NC]
#RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
#RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\.(.*) [NC]
#RewriteCond %{HTTP_HOST} !^localhost(.*)$ [NC]
#RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
##-- Sitemap
RewriteRule ^sitemap
(.*)\
.html$ shop_content
.php?coID
=8 [QSA
,L
] ##----------------------------------------------------------------------------------
##-- When working with SEO-Urls you can decide, whether to use a colon ":" or a dash "-" symbol
##-- (Windows Servers might have problems with colon as delimiter!)
##-- Change the delimiter symbol also in file "/inc/shopstat_functions.inc.php"
##----------------------------------------------------------------------------------
##-- Use colon delimiter ":" for SEO-URLS (default setting)
##-- Categories (:::)
#RewriteCond %{REQUEST_URI} (.*):::([_0-9]+):([_0-9]+)\.html$
#RewriteRule (.*):::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$2&page=$3 [QSA,L]
#RewriteCond %{REQUEST_URI} (.*):::([_0-9]+)\.html$
#RewriteRule (.*):::([_0-9]+)\.html$ index.php?cPath=$2 [QSA,L]
##-- Products (::)
#RewriteRule (.*)::(.+)\.html$ product_info.php?products_id=$2 [QSA,L]
##-- Content (:_:)
#RewriteRule (.*):_:([0-9]+)\.html$ shop_content.php?coID=$2 [QSA,L]
##-- Manufacturers (:.:)
#RewriteCond %{REQUEST_URI} (.*):.:([_0-9]+):([_0-9]+)\.html$
#RewriteRule (.*):.:([_0-9]+):([_0-9]+)\.html$ index.php?manufacturers_id=$2&page=$3 [QSA,L]
#RewriteCond %{REQUEST_URI} (.*):.:([_0-9]+)\.html$
#RewriteRule (.*):.:([0-9]+)\.html$ index.php?manufacturers_id=$2 [QSA,L]
##-- Use dash delimiter "-" for SEO-URLS
##-- Categories (---)
RewriteCond
%{REQUEST_URI
} (.*)---([_0
-9]+)-([_0
-9]+)\
.html$
RewriteRule
(.*)---([_0
-9]+)-([_0
-9]+)\
.html$ index
.php?cPath
=$
2&page
=$
3 [QSA
,L
] RewriteCond
%{REQUEST_URI
} (.*)---([_0
-9]+)\
.html$
RewriteRule
(.*)---([_0
-9]+)\
.html$ index
.php?cPath
=$
2 [QSA
,L
] ##-- Products (--)
RewriteRule
(.*)--(.+)\
.html$ product_info
.php?products_id
=$
2 [QSA
,L
] ##-- RewriteRule (.*)--(.+)\.html$ print_product_info.php [QSA,L]
RewriteRule ^print_product_info
.php
- [R
=404,L
] ##-- Content (-_-)
RewriteRule
(.*)-_
-([0-9]+)\
.html$ shop_content
.php?coID
=$
2 [QSA
,L
] ##-- Manufacturers (-.-)
RewriteCond
%{REQUEST_URI
} (.*)-.-([_0
-9]+)-([_0
-9]+)\
.html$
RewriteRule
(.*)-.-([_0
-9]+)-([_0
-9]+)\
.html$ index
.php?manufacturers_id
=$
2&page
=$
3 [QSA
,L
] RewriteCond
%{REQUEST_URI
} (.*)-.-([_0
-9]+)\
.html$
RewriteRule
(.*)-.-([0-9]+)\
.html$ index
.php?manufacturers_id
=$
2 [QSA
,L
]</IfModule
> Zu Testzwecken habe ich mir dann einen "nackten" Shop installiert und dort die .htaccess rauskopiert und in meinem Shop eingefügt. Gleicher Fehler.
Gelöschte Artikel = Startseite
Meine .htaccess habe ich dann in den nackten Shop kopiert.
Dort den gleichen Test gemacht. Es funktiert. Gelöschter Artikel aufgerufen = 404 Seite.
Ich habe keine Lösung mehr woran es liegen könnte. Ich mag nicht ausschließen das ich das evtl. mal so eingestellt habe, aber in meinen Changelogs konnte ich nichts finden.
Habt ihr vielleicht noch eine Lösung, wo ich nachschauen kann - das wenn ein Artikel nicht mehr vorhanden ist oder eben eine falsche / nicht vorhandene Artikel ID aufgerufen wird - der Shop dann auf 404 Umleitet statt zu Startseite?
Ganz vielen lieben Dank vorab für die Antwort und Hilfe.
Mit freundlichen Grüßen
Heiko
Linkback: https://www.modified-shop.org/forum/index.php?topic=34188.0