subject: serverside delievery of appropriate language-sense pageversion worsened searchengine ranking

neue medienordnung plus
  last edited: Fri, 29 Sep 2017 08:42:22 +0200  
FYI: Use of one url for two or more languages with serverside delievery of appropriate language-sense pageversion worsened searchengine ranking. S. also "Make sure each language version is easily discoverable" - https://support.google.com/webmasters/answer/182192?hl=en

Keep the content for each language on separate URLs. Don’t use cookies to show translated versions of the page. Consider cross-linking each language version of a page. That way, a French user who lands on the German version of your page can get to the right language version with a single click.

Avoid automatic redirection based on the user’s perceived language. These redirections could prevent users (and search engines) from viewing all the versions of your site.

@Andrew Manning @Hubzilla Development+ @Hubzilla Support Forum+ #switch #browsersniffing #BrowserDetection #Browserweiche #sniffing #languagesensitive #serverside #seo #search #searchengine #sumo
Andrew Manning
 
dev.hubzilla.org is now at dev branch commit 31d9208.

Here's an example of what changed for the Page module:



diff --git a/Zotlabs/Module/Page.php b/Zotlabs/Module/Page.php
index 6ef285d..7bc90c0 100644
--- a/Zotlabs/Module/Page.php
+++ b/Zotlabs/Module/Page.php
@@ -43,11 +43,31 @@ class Page extends \Zotlabs\Web\Controller {
    
        $channel_address = argv(1);
    
+        // Always look first for the page name prefixed by the observer language; for instance page/nickname/de/foo
+        // followed by page/nickname/foo if that is not found.
+        // If your browser language is de and you want to access the default in this case,
+        // use page/nickname/-/foo to over-ride the language and access only the page with pagelink of 'foo'
+
+        $page_name = '';
+        $ignore_language = false;
+
+        for($x = 2; $x < argc(); $x ++) {
+            if($page_name === '' && argv($x) === '-') {
+                $ignore_language = true;
+                continue;
+            }
+            if($page_name)
+                $page_name .= '/';
+            $page_name .= argv($x);
+        }
+
+
        // The page link title was stored in a urlencoded format
        // php or the browser may/will have decoded it, so re-encode it for our search
    
-        $page_id = urlencode(argv(2));
-    
+        $page_id = urlencode($page_name);
+        $lang_page_id = urlencode(\App::$language . '/' . $page_name);
+
        $u = q("select channel_id from channel where channel_address = '%s' limit 1",
            dbesc($channel_address)
        );
@@ -64,16 +84,31 @@ class Page extends \Zotlabs\Web\Controller {
    
        require_once('include/security.php');
        $sql_options = item_permissions_sql($u[0]['channel_id']);
-    
-        $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
-            where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and item.item_delayed = 0
-            and (( iconfig.k = 'WEBPAGE' and item_type = %d )
-            OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
-            intval($u[0]['channel_id']),
-            dbesc($page_id),
-            intval(ITEM_TYPE_WEBPAGE),
-            intval(ITEM_TYPE_PDL)
-        );
+
+        $r = null;    
+
+        if(! $ignore_language) {
+            $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
+                where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and item.item_delayed = 0
+                and (( iconfig.k = 'WEBPAGE' and item_type = %d )
+                OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
+                intval($u[0]['channel_id']),
+                dbesc($lang_page_id),
+                intval(ITEM_TYPE_WEBPAGE),
+                intval(ITEM_TYPE_PDL)
+            );
+        }
+        if(! $r) {
+            $r = q("select item.* from item left join iconfig on item.id = iconfig.iid
+                where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and item.item_delayed = 0
+                and (( iconfig.k = 'WEBPAGE' and item_type = %d )
+                OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
+                intval($u[0]['channel_id']),
+                dbesc($page_id),
+                intval(ITEM_TYPE_WEBPAGE),
+                intval(ITEM_TYPE_PDL)
+            );
+        }
        if(! $r) {
    
            // Check again with no permissions clause to see if it is a permissions issue
neue medienordnung plus
  last edited: Fri, 26 May 2017 10:04:37 +0200  
@Mike Macgirvin
If you want to translate a webpage 'foo' into German you just create a page called 'de/foo' and translate the page.

I mean, for search friendly, SEO-optimized URL's is it inpossible for all languages same address foo to use. URL-value, keywords in URL's are important for pageranking - s. Therefore is it important, that URL contains keywords, suitably for respective language in each page.
neue medienordnung plus
  
I included the solution "Support for publishing of search engine friendly multilinguage content" in my speech/ presentation Hubzilla - introduction, possibilities, Hubzilla community - in three languages ;-) http://hub2.sprechrun.de/page/hucope/hubzilla_tools_page_en
Hubzilla search query syntax

neue medienordnung plus
  last edited: Sun, 22 Jan 2017 09:47:57 +0100  
@Hubzilla Support Forum+
How can I my Hubzilla search query so define, that the searchresults include only exclusive hits with predefined property. For example:
- only hits from @Hubzilla Support Forum
- or only hits with date after 01.01.2017
- or only hits from Hubzilla-Member @asterisk
- et cetera ...

Hubzilla search feature will more important, once Hubzilla-universe increases.

#search #searchquery
Mario Vavti
  
This URL https://gerzilla.de/network?cid=175&search=email [1] deliver results, there are not part of "Hubzilla Support Forum". Are parameter in the URL [1] correct?

For me your URL (with the correct cid, which is nothing else but the channel id) returns the correct result
Mike Macgirvin
  
which is nothing else but the channel id


It's actually the connection id (abook_id).

This URL https://gerzilla.de/network?cid=175&search=email [1] deliver results, there are not part of "Hubzilla Support Forum".


You are highlighting the pointer to the original thread to suggest that it is wrong  - but the precise link is unimportant here. The pointer to the original thread goes to the original post on their own site, but If you follow that thread link and look at the top article in the conversation, it either supplies a forum mention tag or it was written directly to the support forum's wall. Or in other words it's part of a support forum conversation. If you visit the support forum's channel page and look for that post or conversation, you will find it there.