diff --git a/Controller/PageController.php b/Controller/PageController.php
index 95268f04..a9e550c2 100644
--- a/Controller/PageController.php
+++ b/Controller/PageController.php
@@ -3,11 +3,17 @@

 namespace EzSystems\StudioUIBundle\Controller;

-use EzSystems\EzPlatformAdminUiBundle\Controller\Controller;
-use EzSystems\PlatformUIBundle\ApplicationConfig\Provider;
+use eZ\Publish\API\Repository\ContentService;
+use eZ\Publish\API\Repository\LocationService;
+use eZ\Publish\API\Repository\URLAliasService;
+use eZ\Publish\API\Repository\Values\Content\Location;
+use eZ\Publish\Core\MVC\ConfigResolverInterface;
 use EzSystems\EzPlatformAdminUi\Form\Data\Content\Draft\ContentCreateData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Content\Draft\ContentEditData;
 use EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory;
+use EzSystems\EzPlatformAdminUiBundle\Controller\Controller;
+use EzSystems\PlatformUIBundle\ApplicationConfig\Provider;
+use EzSystems\StudioUIBundle\SiteAccess\ReverseMatcher;

 class PageController extends Controller
 {
@@ -17,22 +23,76 @@ class PageController extends Controller
     /** @var \EzSystems\PlatformUIBundle\ApplicationConfig\Provider */
     private $configAggregator;

+    /** @var array */
+    private $siteaccessList;
+
+    /** @var LocationService */
+    private $locationService;
+
+    /** @var ContentService */
+    private $contentService;
+
+    /** @var ConfigResolverInterface */
+    private $configResolver;
+
+    /** @var URLAliasService */
+    private $urlAliasService;
+
+    /** @var ReverseMatcher */
+    private $reverseMatcher;
+
     public function __construct(
         Provider $configAggregator,
-        FormFactory $formFactory
+        FormFactory $formFactory,
+        array $siteaccessList,
+        LocationService $locationService,
+        ContentService $contentService,
+        ConfigResolverInterface $configResolver,
+        URLAliasService $urlAliasService,
+        ReverseMatcher $reverseMatcher
     ) {
         $this->configAggregator = $configAggregator;
         $this->formFactory = $formFactory;
+        $this->siteaccessList = $siteaccessList;
+        $this->locationService = $locationService;
+        $this->contentService = $contentService;
+        $this->configResolver = $configResolver;
+        $this->urlAliasService = $urlAliasService;
+        $this->reverseMatcher = $reverseMatcher;
     }

-    public function pageAction()
+    public function pageAction($locationId, $languageCode)
     {
+        $uriRoot = null;
+        $location = $locationId ? $this->locationService->loadLocation($locationId) : null;
+        $content = $location
+            ? $this->contentService->loadContent(
+                $location->getContentInfo()->id,
+                $languageCode ? [$languageCode] : []
+            )
+            : null;
+
+        $siteaccesses = [];
+        $aliases = [];
+        if (null !== $content) {
+            $languageCode = null !== $languageCode ? $languageCode : $content->contentInfo->mainLanguageCode;
+            $siteaccesses = $this->getRelatedSiteaccesses($languageCode, $location);
+            $aliases = $this->listLocationAliases($location, false, $languageCode);
+            $uriRoot = $this->getUriRootAddresses($siteaccesses);
+        }
+
         $contentCreateForm = $this->getContentCreateForm();
         $contentEditDataForm = $this->getContentEditDataForm();

         return $this->render(
             'eZStudioUIBundle:page:page.html.twig',
             [
+                'content' => $content,
+                'location' => $location,
+                'language_code' => $languageCode,
+                'siteaccesses' => $siteaccesses,
+                'aliases' => $aliases,
+                'uri_root' => $uriRoot,
                 'parameters' => $this->configAggregator->getConfig(),
                 'form_content_create' => $contentCreateForm->createView(),
                 'form_content_edit' => $contentEditDataForm->createView(),
@@ -53,4 +113,62 @@ private function getContentEditDataForm()
             new ContentEditData()
         );
     }
+
+    /**
+     * @param string $languageCode
+     * @param Location $location
+     *
+     * @return string[]
+     */
+    private function getRelatedSiteaccesses($languageCode, $location)
+    {
+        $existsInSiteaccesses = [];
+        foreach ($this->siteaccessList as $siteaccess) {
+            $languages = $this->configResolver->getParameter('languages', null, $siteaccess);
+            if (!in_array($languageCode, $languages, true)) {
+                continue;
+            }
+
+            $rootLocationId = $this->configResolver->getParameter('content.tree_root.location_id', null, $siteaccess);
+            if (!in_array($rootLocationId, $location->path)) {
+                continue;
+            }
+
+            $existsInSiteaccesses[] = $siteaccess;
+        }
+
+        return $existsInSiteaccesses;
+    }
+
+    /**
+     * @param Location $location
+     * @param bool $custom
+     * @param string|null $languageCode
+     *
+     * @return array
+     */
+    private function listLocationAliases($location, $custom = false, $languageCode = null)
+    {
+        $aliases = $this->urlAliasService->listLocationAliases($location, $custom, $languageCode);
+
+        if (empty($aliases)) {
+            $aliases = $this->urlAliasService->listLocationAliases($location, $custom);
+        }
+
+        return $aliases;
+    }
+
+    /**
+     * @param array $siteaccesses
+     *
+     * @return array
+     */
+    private function getUriRootAddresses(array $siteaccesses)
+    {
+        $uriRoot = array_combine($siteaccesses, array_map([$this->reverseMatcher, 'getUrlRoot'], $siteaccesses));
+
+        return array_map(function ($siteaccess) {
+            return rtrim($siteaccess, '/');
+        }, $uriRoot);
+    }
 }
diff --git a/Menu/ConfigureMenuListener.php b/Menu/ConfigureMenuListener.php
index 3cf51104..a05912e1 100644
--- a/Menu/ConfigureMenuListener.php
+++ b/Menu/ConfigureMenuListener.php
@@ -3,20 +3,37 @@

 namespace EzSystems\StudioUIBundle\Menu;

+use eZ\Publish\API\Repository\Values\Content\Content;
+use eZ\Publish\API\Repository\Values\Content\Location;
 use EzSystems\EzPlatformAdminUi\Menu\Event\ConfigureMenuEvent;
 use JMS\TranslationBundle\Model\Message;
 use JMS\TranslationBundle\Translation\TranslationContainerInterface;

 class ConfigureMenuListener implements TranslationContainerInterface
 {
+    public const ITEM_PAGE = 'ezplatform_ee_landing_page';
+
     public function onMenuConfigure(ConfigureMenuEvent $event)
     {
         $root = $event->getMenu();
+        $options = $event->getOptions();
+
+        /** @var Location $location */
+        $location = $options['location'] ?? null;
+        /** @var Content $content */
+        $content = $options['content'] ?? null;

         // @todo: Page => menu.page
-        $root->addChild('Page', [
+        $root->addChild(self::ITEM_PAGE, [
             'route' => 'ezplatform.ee.page',
-            'extras' => ['icon' => 'content-list'],
+            'routeParameters' => $location && $content ? [
+                'locationId' => $location->id,
+                'languageCode' => $content->prioritizedFieldLanguageCode ?? $content->contentInfo->mainLanguageCode,
+            ] : [],
+            'extras' => [
+                'icon' => 'content-list',
+                'translation_domain' => 'ezplatformee',
+            ],
         ]);
     }

@@ -28,7 +45,7 @@ public function onMenuConfigure(ConfigureMenuEvent $event)
     public static function getTranslationMessages()
     {
         return [
-            (new Message('menu.page', 'ezplatformee'))->setDesc('Page'),
+            (new Message(self::ITEM_PAGE, 'ezplatformee'))->setDesc('Page'),
         ];
     }
 }
diff --git a/Resources/config/routing.yml b/Resources/config/routing.yml
index c156a347..cf64ac15 100644
--- a/Resources/config/routing.yml
+++ b/Resources/config/routing.yml
@@ -48,9 +48,13 @@ ezpublish_rest_listLocationURLAliases:
         locationPath: "[0-9/]+"

 ezplatform.ee.page:
-    path: /page
+    path: /page/{locationId}/{languageCode}
     defaults:
         _controller: 'eZStudioUIBundle:Page:page'
+        locationId: ~
+        languageCode: ~
+    requirements:
+        locationId: \d+

 # Overwrite internal route to expose it
 _ezpublishPreviewContent:
diff --git a/Resources/config/services.yml b/Resources/config/services.yml
index f5b0e289..07054137 100644
--- a/Resources/config/services.yml
+++ b/Resources/config/services.yml
@@ -98,8 +98,14 @@ services:
     EzSystems\StudioUIBundle\Controller\PageController:
         public: true
         arguments:
-            - "@ezsystems.platformui.application_config.aggregator"
-            - "@EzSystems\\EzPlatformAdminUi\\Form\\Factory\\FormFactory"
+            - '@ezsystems.platformui.application_config.aggregator'
+            - '@EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory'
+            - '%ezpublish.siteaccess.list%'
+            - '@ezpublish.api.service.location'
+            - '@ezpublish.api.service.content'
+            - '@ezpublish.config.resolver'
+            - '@ezpublish.api.service.url_alias'
+            - '@ezstudioui.reverse_matcher'
         tags: ['controller.service_arguments']
         calls:
             - [setContainer, ["@service_container"]]
diff --git a/Resources/public/js/views/services/ezs-browserviewservice.js b/Resources/public/js/views/services/ezs-browserviewservice.js
index 836b672a..5d942563 100644
--- a/Resources/public/js/views/services/ezs-browserviewservice.js
+++ b/Resources/public/js/views/services/ezs-browserviewservice.js
@@ -70,12 +70,15 @@ YUI.add('ezs-browserviewservice', function (Y) {
         },

         _load: function (next) {
-            var req = this.get('request');
+            var req = this.get('request'),
+                startingContentUrl = this.get('app').get('startingContentUrl');

             this._showLoadingScreen();

             if (req.params.previewContentUrl) {
                 this.set('previewUrl', req.params.previewContentUrl);
+            } else if (startingContentUrl) {
+                this.set('previewUrl', startingContentUrl);
             }

             /**
diff --git a/Resources/translations/ezplatformee.en.xlf b/Resources/translations/ezplatformee.en.xlf
new file mode 100644
index 00000000..5acad5b9
--- /dev/null
+++ b/Resources/translations/ezplatformee.en.xlf
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:jms="urn:jms:translation" version="1.2">
+  <file source-language="en" target-language="en" datatype="plaintext" original="not.available">
+    <header>
+      <tool tool-id="JMSTranslationBundle" tool-name="JMSTranslationBundle" tool-version="1.1.0-DEV"/>
+      <note>The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message.</note>
+    </header>
+    <body>
+      <trans-unit id="3d8082b49001439691d6a5d2269d110bb21b2761" resname="ezplatform_ee_landing_page">
+        <source>Page</source>
+        <target state="new">Page</target>
+        <note>key: ezplatform_ee_landing_page</note>
+      </trans-unit>
+    </body>
+  </file>
+</xliff>
diff --git a/Resources/views/page/page.html.twig b/Resources/views/page/page.html.twig
index a4f64627..9a72d37c 100644
--- a/Resources/views/page/page.html.twig
+++ b/Resources/views/page/page.html.twig
@@ -55,6 +55,11 @@
             <p>{{ 'javascript.disabled.required'|trans }}</p>
             <p><strong>{{ 'javascript.enable'|trans }}</strong></p>
         </noscript>
+        {% set page_uri = "" %}
+        {% if siteaccesses|length > 0 and aliases|length > 0 %}
+            {% set page_view_alias = aliases|length > 0 ? aliases[0] : null %}
+            {% set page_uri = uri_root[siteaccesses[0]] ~ page_view_alias.path %}
+        {% endif %}
         {% javascripts
         'bundles/bazingajstranslation/js/translator.min.js'
         'bundles/ezplatformuiassets/vendors/yui3/build/yui/yui-min.js'
@@ -78,7 +83,8 @@
                     config: {{ parameters|json_encode|raw }},
                     sessionInfo: {{ parameters.sessionInfo|json_encode|raw }},
                     plugins: Y.eZ.PluginRegistry.getPlugins(Y.eZ.PlatformUIApp.NAME),
-                    userId: 14
+                    userId: {{ admin_ui_config.user.user.id }},
+                    startingContentUrl: '{{ page_uri }}'
                 });
                 app.on('ready', function () {
                     Y.one(Y.config.doc.documentElement).addClass('ez-platformui-app-ready');
