/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
/logo/social.webp` без themes/{theme}/ prefix.
// Также social card crawlers (FB/Twitter/Telegram) и Google search index содержат старые
// pre-cutover URLs. 301 → текущий theme's asset.
$legacyLogoRedirect = function ($file) {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/{$file}", 301);
};
Route::get('logo/{file}', $legacyLogoRedirect)
->where('file', '(social|og_image|twitter|favicon|logo|insthacker)\.(png|webp|jpg|jpeg|svg)');
// iOS Safari + iOS apps + Pinterest crawler автоматически запрашивают эти URLs независимо
// от в HTML. 301 → theme's favicon.png (180×180+ ideally).
$appleTouchRedirect = function () {
$template = strtolower(config('core.template') ?? 't21');
return redirect("/themes/{$template}/logo/favicon.png", 301);
};
Route::get('apple-touch-icon{any}.png', $appleTouchRedirect)
->where('any', '(-precomposed|-[0-9]+x[0-9]+|-[0-9]+x[0-9]+-precomposed)?');
// Password managers (1Password, Bitwarden, iCloud Keychain) probe этот URL для passkey
// discovery (W3C draft). Без endpoint'а они fall back на password autofill — функционально
// не сломано, но 404 в логах. Возвращаем валидный пустой manifest.
Route::get('.well-known/passkey-endpoints', function () {
return response()->json(
['enroll' => null, 'manage' => null],
200,
['Cache-Control' => 'public, max-age=86400']
);
});
Volg de locatie van Instagram zonder dat ze het weten – Onzichtbare GPS-monitoring | InstHacker
Zij delen hun locatie, u blijft onzichtbaar
Volg iemands Instagram-locatie zonder sporen achter te laten. Onze stealth-trackingtechnologie haalt GPS-gegevens stil op — geen vriendschapsverzoeken, geen verdachte activiteiten, geen meldingen die de doelpersoon bereiken. Ze posten normaal, terwijl al hun bewegingen op uw privékkaart verschijnen.
Onzichtbare tracking: hoe het echt werkt
Traditionele stalkingmethoden laten sporen achter: profielbezoeken, volgverzoeken, verhaalweergaven. Onze aanpak is anders. We halen locatiegegevens op via backend-kanalen die nooit in aanraking komen met het meldingssysteem van de gebruiker. Je blijft volledig onzichtbaar tijdens het hele proces.
Het waarschuwingssysteem van Instagram omzeilen
Instagram waarschuwt gebruikers bij screenshots, profielbezoeken van bepaalde accounts en inlogpogingen. Locatie-extractie via onze tool activeert geen van deze waarschuwingen. Het beveiligingssysteem herkent onze methode voor gegevensverzameling simpelweg niet als traceerbare activiteit.
Verhalen met locatiestickers verdwijnen binnen 24 uur, maar niet voordat ons systeem ze heeft vastgelegd. We monitoren doelaccounts continu en verzamelen locatiegegevens van tijdelijke posts zonder ons als kijker te registreren. Ze zien uw naam nooit in hun lijst met verhaalweergaven.
Beweegingen monitoren zonder gedetecteerd te worden
Volg de locatie van elke Instagram-gebruiker volledig anoniem. Ze blijven gewoon posten, zonder te weten dat elke getagde locatie rechtstreeks naar uw dashboard wordt gestuurd.
Geen profielbezoeken geregistreerd. Geen vermelding in de lijst met kijkers. Geen meldingen voor volgers. Uw trackingactiviteiten vinden volledig buiten de gebruikerssystemen van Instagram plaats. Volledige onzichtbaarheid gegarandeerd.
Stealth-waarschuwingssysteem
Ontvang meldingen wanneer er nieuwe locatiegegevens verschijnen — stil aan uw kant, onzichtbaar aan hun kant. Weet direct waar ze zich bevinden, zonder ooit uw interesse in hun verblijfplaats te onthullen.
Continue achtergrondmonitoring
Stel het in en vergeet het. Ons systeem houdt het doelaccount 24/7 in de gaten en legt automatisch elke post, verhaal of check-in met locatietag vast. Bekijk de verzamelde gegevens op elk moment vanuit uw beveiligde dashboard.
Volg zonder sporen achter te laten
Voer de gebruikersnaam van het doelwit in via een versleutelde verbinding. Er is geen koppeling van accounts nodig. Uw identiteit blijft volledig gescheiden van het volgproces.
Stealth-modus geactiveerd
Het systeem begint met monitoren zonder dat er zichtbare activiteit op het account van het doelwit plaatsvindt. Er worden geen volgers, likes of views geregistreerd. Het verzamelen van gegevens gebeurt in het geheim.
Locatiegegevens worden privé geleverd
GPS-coördinaten, getagde locaties en bewegingspatronen verschijnen alleen in uw dashboard. Geen gedeelde toegang, geen gegevenssporen, geen verbinding met uw persoonlijke Instagram.
Zullen ze weten dat ik hun Instagram-locatie volg?
Onmogelijk. Ons systeem heeft nooit op zichtbare wijze interactie met hun account. Geen volgers, geen profielbezoeken, geen verhaalweergaven. Instagram heeft geen mechanisme om gebruikers te waarschuwen voor ons type gegevensverzameling.
Kunnen ze tracking detecteren via de beveiligingsinstellingen van Instagram?
Nee. Het beveiligingsdashboard van Instagram toont inlogsessies, gekoppelde apps en accountactiviteit, maar onze trackingmethode heeft hier geen invloed op. Hun beveiligingspagina blijft volledig schoon.
Wat als ze controleren wie hun verhaal heeft bekeken?
Uw naam verschijnt nooit. We leggen locatiegegevens van verhalen vast zonder ons als kijker te registreren. Zelfs als ze obsessief hun kijkerslijst controleren, zult u daar niet staan.
Werkt dit ook bij verdachte of veiligheidsbewuste gebruikers?
Ja. Zelfs gebruikers die regelmatig hun privacyinstellingen en inlogactiviteit controleren, kunnen onze monitoring niet detecteren. De tracking werkt op een niveau dat zij niet kunnen controleren.
Hoe weet ik dat de tracking echt onzichtbaar is?
Test het zelf. Volg het account van een vriend en vraag hem of haar om te controleren op ongebruikelijke activiteiten. Ze zullen niets vinden: geen waarschuwingen, geen meldingen, geen verdachte inlogsessies. Volledige onzichtbaarheid bevestigd.
Voer uw internationale telefoonnummer of gebruikersnaam in en druk op "Start" om de sessie te starten.
Met InstHacker kun je elk account bekijken, elk nummer volgen en elk incident oplossen.
InstHacker is een innovatief online platform voor beveiliging, accountherstel en monitoring dat de toegangsprocedure en het daaropvolgende toezicht op een door de gebruiker opgegeven account nabootst. Toegang tot de functionele kenmerken van de Dienst is alleen toegestaan nadat de Gebruiker de registratie en autorisatie op de Website heeft voltooid in overeenstemming met de door de Administratie vastgestelde procedure. Door een account aan te maken of de Dienst te gebruiken, bevestigt u dat u deze Gebruiksvoorwaarden zorgvuldig hebt gelezen, volledig hebt begrepen en onvoorwaardelijk akkoord gaat met deze voorwaarden, en dat u InstHacker uitsluitend zult gebruiken voor accounts die persoonlijk aan u toebehoren of die u beheert op basis van de uitdrukkelijke en verifieerbare toestemming van de rechtmatige eigenaar ervan.
meer ...
Architectuur InstHacker sluit elke opslag van gegevens waarmee klanten kunnen worden geïdentificeerd uit. Alle informatie die tijdens de registratie wordt ingevoerd en alle gegevens die tijdens het gebruik van de dienst worden verwerkt, worden uitsluitend in realtime in gecodeerde vorm verwerkt en worden niet op de server opgeslagen of geregistreerd. Er kan geen toegang worden verkregen tot gegevens en deze kunnen niet worden overgedragen aan derden, ongeacht de bron van het verzoek.
↑
Wij gebruiken cookies.
Wij gebruiken cookies om gegevens te verzamelen om uw ervaring op onze website te verbeteren. Lees ons gebruiksbeleid
cookies U kunt
uw voorkeuren
op elk moment wijzigen.
Accepteren
Nee, bedankt.
Instellingen voor gegevensverzameling website
Wij gebruiken gegevens verzameld via cookies en JavaScript-bibliotheken om uw browse-ervaring te verbeteren, websiteverkeer te analyseren, gepersonaliseerde advertenties te leveren en de algehele prestaties van onze website te verbeteren.
Wij gebruiken browsercookies die nodig zijn voor het goed functioneren van de website. Bijvoorbeeld, wij slaan uw instellingen voor gegevensverzameling van de website op zodat we hieraan kunnen voldoen als u terugkeert naar onze website. U kunt deze cookies uitschakelen in uw browserinstellingen, maar als u dit doet, werkt de website mogelijk niet zoals bedoeld.
Om gebruikersgedrag te begrijpen om u een relevantere browse-ervaring te bieden of om inhoud op onze website te personaliseren. Bijvoorbeeld, we verzamelen informatie over welke pagina's u bezoekt om relevantere informatie te kunnen bieden.
Om advertenties op onze website en andere websites te personaliseren en de effectiviteit ervan te meten. Bijvoorbeeld, we kunnen u gepersonaliseerde advertenties tonen op basis van de pagina's die u bezoekt op onze website.
Annuleren
Instellingen opslaan