Как раскодировать частично закодированый урл?

Samail
На сайте с 10.05.2007
Offline
369
636

В вебмастере обнаружил 404-е ошибки с ссылками вида: /index.php%3Foption%3Dcom_sobi2%26sobi2Task%3Dsobi2Details%26sobi2Id%3D454%26Itemid%3D40

Не знаю где их Яндекс взял, но где-то взял. Как сделать что-бы при заходе по такой ссылке она превращалась в нормальную ссылку?

---------- Добавлено 07.06.2016 в 18:15 ----------

Samail:
Не знаю где их Яндекс взял

Нашел откуда, это advodka.com такие налепила

L
На сайте с 07.12.2007
Offline
351
#1

Можно в самом index.php отлавливать такие url и делать редирект:

if (strpos($_SERVER{'REQUEST_URI'}, '%3F')) {
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: '.urldecode( $_SERVER{'REQUEST_URI'} ) );
exit;
}
Вместо strpos() можно сделать более дотошную регулярку на такие url

Только вот нужны ли вам входящие ссылки с Адводки, может лучше пусть будет 404 Not Found?

PS: В php-коде замените { -> на [ и } -> ]

Samail
На сайте с 10.05.2007
Offline
369
#2
Только вот нужны ли вам входящие ссылки с Адводки, может лучше пусть будет 404 Not Found?

Так в вебмастере и Search Console всё этими ссылками забито, так можно и настоящую ошибку проглядеть. Да и ссылки с адводки же никуда не денутся.

---------- Добавлено 07.06.2016 в 19:51 ----------

Не доходит дело до index.php с такими ссылками 404 ошибку сам хостер отдаёт.

W
На сайте с 09.04.2013
Offline
46
#3
Samail:
Не доходит дело до index.php с такими ссылками 404 ошибку сам хостер отдаёт.

Чтобы запрос доходил добавьте следующий код в .htaccess


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>
Ragnarok
На сайте с 25.06.2010
Offline
239
#4

джумла же?

видимо, компонент ссылки генерирует (/index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=454&Itemid=40)

проверяйте, что там отдаётся по этим ссылкам и делайте чтобы отдавалось 404, или закрывайте в robots

опять какой-то фигни насоветовали =|

//TODO: перестать откладывать на потом
Samail
На сайте с 10.05.2007
Offline
369
#5

По этим ссылкам открывается то что нужно, когда там стоят обычные = ? &, а когда они закодированы, а всё остальное нет тогда 404 ошибка появляется но не Джумла её отдаёт, а хостер.

---------- Добавлено 08.06.2016 в 12:49 ----------

Через .htaccess нельзя раскодировать урл?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий