Prerender с Angular UI Router не отображает динамическое содержимое корневой страницы

angularjs apache .htaccess angular-ui-router prerender

506 просмотра

1 ответ

У меня есть prerender, работающий и работающий для всех страниц, кроме корневой (домашней) страницы.

Например:

http://www.example.com/?_escaped_fragment_=

не отображает динамические данные. Все остальные страницы работают как

http://www.example.com/contact?_escaped_fragment_=

Как будто угловой UI-маршрутизатор не знает, в каком состоянии находится корень, поэтому он оставляет представление пустым. Однако корневая страница http://www.example.comбез escaped_fragmentэтого делает правильно.

Я добавил метатег фрагмента в заголовке и html5 в true в угловом конфиге.


index.html:

<meta name="fragment" content="!">

app.js:

$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');

.htaccess:

# Change YOUR_TOKEN to your prerender token and uncomment that line if you want to cache urls and view crawl stats
# Change http://example.com (at the end of the last RewriteRule) to your website url

<IfModule mod_headers.c>
    #RequestHeader set X-Prerender-Token "MY TOKEN"
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    <IfModule mod_proxy_http.c>
        RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
        RewriteCond %{QUERY_STRING} _escaped_fragment_

        # Only proxy the request to Prerender if it's a request for HTML
        RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) http://service.prerender.io/http://www.example.com$2 [P,L]
    </IfModule>

</IfModule>


# BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
# END WordPress
Автор: Raymond the Developer Источник Размещён: 08.11.2019 11:24

Ответы (1)


2 плюса

Решение

Ваш .htaccess может иметь URL-адрес /index.php для домашней страницы. Если это так, вы можете изменить правило переписывания так:

RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(index\.php)?(.*) http://service.prerender.io/http://www.example.com$3 [P,L]

Я добавил (index.php)? чтобы выяснить это, если найдены и изменены $ 2 до $ 3. Не забудьте изменить http://www.example.com на свой домен.

Автор: Prerender.io Размещён: 21.08.2016 02:38
Вопросы из категории :
32x32