HTaccess в сочетании с AngularJS

0

Я закодировал новый веб-сайт как побочный проект, и я бы хотел, чтобы он был проиндексирован Google и co. Веб-сайт был создан с помощью AngularJS и оптимизирован для SEO (по крайней мере, я пытался).

До сих пор Google индексировал каждую страницу ужасно:

www.mywebsite.com/#!/post/title-of-this-post/

Пока страница была объявлена в sitemap.xml:

<url>
    <loc>http://mywebsite.com/post/title-of-this-post</loc>
    <lastmod>2015-08-04T00:00:00+00:00</lastmod>
    <changefreq>daily</changefreq>
</url>

Веб-сайт использует HTML5 routes для удаления #! символы. Когда я пытаюсь добраться до индексированной страницы, она переходит к домашней. Мне нужно удалить trailing slash.

До сих пор я смог создать следующий файл HtAccess:

DirectoryIndex index.html
RewriteEngine On
RewriteBase /

# BEGIN Seo crawler
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^$ /crawler.php$1 [QSA,L]
# END Seo crawler

# BEGIN sitemap and rss
RewriteRule ^sitemap.xml$ sitemap.php [L]
RewriteRule ^rss.xml$ rssfeed.php [L]
# END sitemap and rss

# BEGIN Remove trailing slash from URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule (.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
# END Remove trailing slash from URLs

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]

Но это не работает.

  • Ввод http://mywebsite.com/post/title-of-this-post/ будет правильно перенаправлен на http://mywebsite.com/post/title-of-this-post (Отслеживание косой черты удаляется).
  • Ввод текста www.mywebsite.com/#!/post/title-of-this-post/ будет печально перенаправлен на сайт www.mywebsite.com/home.
  • Ввод текста www.mywebsite.com/#!/post/title-of-this-post (Без конечной косой черты) будет правильно перенаправляться на http://mywebsite.com/post/title-of-this-post.

Есть ли способ достичь этого?

Я использую Route UI для своего проекта AngularJS.

Теги:
.htaccess

1 ответ

0
Лучший ответ

Наконец, мне удалось исправить это самостоятельно:

Просто добавьте этот фрагмент кода в источник AngularJS:

app.config(function ($urlMatcherFactoryProvider) {
    $urlMatcherFactoryProvider.caseInsensitive(true);
    $urlMatcherFactoryProvider.strictMode(false);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню