.htaccess anchor redirect

Svetliooo

Well-Known Member
Здравейте,
Имам един особен казус:
Гугъл е решил да се гаври със сайта ми и ми билдва някакви супер странни адреси, които започват с sitename.com/#!infoPage/show/one-page-name-then-another-page-name-and-then-another-page-name - да след "/show/" си лепи каквото си иска и е създал 160 000 вариации по този начин. Всички тези вариации съответно отварят началната страница и всичко ми се лепи като duplicate content в google search console.

Рутера в PHP не го хваща, защото php не може да хване anchor tag в url адреса. Не успях да направя нищо с .htaccess, което да пренасочва.
Как мога да се справя с този проблем?
 
Мисля че намерих решение - robots.txt файл, в който да кажа на търсачката да не отваря нищо:

Disallow: /#!infoPage/show/

Ще изчакам няколко дни, за да видя дали ще има ефект.
 
Аз бих върнал 403 или 404 за да съм сигурен, че няма да го индексира.

Код:
RewriteEngine On
RewriteRule ^(.*)/show/ - [R=404,L]
 
не ме устройва, защото почти всички адреси в сайта са ми Something/show/id - трябва ми само за #!

PHP изобщо не може да хване anchor tag в url-a, така че там не става.
Javascript може, но тогава вече сайта ще е върнал http 200
.htaccess към момента не съм намерил начин да сработи
 
Добре де. Разбра идеята.

Редактирай regex-a за според каквото ти трябва и просто върни 404 или 403. Така ще спре да го индексира.

Ако имаш Nginx или друго прокси отпред може и там, за да не стига до Apache да ти спами трафик.

Ако имаш Cloudflare и там може.

Едит: Сега като се замисля не съм сигурен с .htaccess може ли да се мачне #, защото # се използва за фрагментиране на ниво клиент и ако не се лъжа не се парсва при http request.
 
Последно редактирано:
Опитах със следните, но нито едно не проработи:

1.
RewriteCond %{REQUEST_URI} ^/#! [NC]
RewriteRule ^(.*)$ /new-url [R=301,L]

2.
RewriteCond %{REQUEST_URI} ^/#!(.+)$ [NC]
RewriteRule ^(.*)$ %1 [R=301,L]

3.
RewriteRule ^\#!infoPage/show/(.*)$ /$1 [R=301,L]
 
Недей 301. 404 или 403.

Обаче както споменах май няма да стане така. Опитай на ниво прокси (ако имаш).

И трябва да разбереш защо са се появили за да решиш корена на проблема.

Едит: също ако infoPagе не е важен URI можеш да го хванеш по него и да си свиркаш.
 
  • Haha
Реакции: null
Ъпдейт:
Тъй като невалидните връзки станаха над 800 000, отнема доста време на Гугъл бота. Но има ясна теденция - вече 160 000 страници бяха маркирани с "Excluded by ‘noindex’ tag" - което означава, че решението с robots.txt работи.

Отделно приложих и следния js code на страницата:

<script>
if (location.href.length && location.href.indexOf('#!infoPage') > -1) {
if (history.replaceState) {
//if we have the History API, update the URL for future use, but don't actually need to redirect. Can just load and display the page.
history.replaceState(null, null, '/');
} else {
//perform a 'javascript' redirection. This is a one off.
window.location.href = '/';
}
}
</script>
Въпреки че е js redirect, това е достатъчно за гугъл бота да разбере, че тези страници не трябва да се обхождат.
 
Та да обобщя - вече всичко е наред! Страниците малко по малко изчезват и нови такива не се появяват.
Явно че варианта с javascript redirect все пак работи.
 

Горе