Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 12522 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://jappit.com/robots.txt
301 MovedPermanently
https://jappit.com/robots.txt
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jappit.com</title>
<meta name="description" content="jappit.com — pixel things since the 90s.">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&display=swap" rel="stylesheet">
<style>
:root {
--bg: #0E0B1F;
--bg2: #1A1240;
--fg: #F0F0FF;
--pink: #FF3C8F;
--cyan: #4CE0FF;
--yellow: #FFE45A;
--green: #6CFF8C;
--purple: #C084FC;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body {
height: 100%;
background: var(--bg);
color: var(--fg);
font-family: 'Press Start 2P', monospace;
image-rendering: pixelated;
image-rendering: crisp-edges;
overflow-x: hidden;
}
/* Starfield */
.stars {
position: fixed; inset: 0;
background-image:
radial-gradient(2px 2px at 20px 30px, #fff, transparent),
radial-gradient(2px 2px at 60px 70px, var(--cyan), transparent),
radial-gradient(1px 1px at 90px 40px, #fff, transparent),
radial-gradient(2px 2px at 130px 80px, var(--purple), transparent),
radial-gradient(1px 1px at 160px 30px, #fff, transparent),
radial-gradient(2px 2px at 200px 90px, var(--yellow), transparent),
radial-gradient(1px 1px at 240px 50px, #fff, transparent);
background-repeat: repeat;
background-size: 260px 120px;
opacity: 0.5;
animation: starfield 60s linear infinite;
z-index: 0;
}
@keyframes starfield {
from { background-position: 0 0; }
to { background-position: -260px -120px; }
}
/* CRT scanlines */
.scanlines {
position: fixed; inset: 0;
background: repeating-linear-gradient(
0deg,
rgba(0,0,0,0.12),
rgba(0,0,0,0.12) 1px,
transparent 1px,
transparent 3px
);
pointer-events: none;
z-index: 999;
mix-blend-mode: multiply;
}
.glow-vignette {
position: fixed; inset: 0;
background: radial-gradient(ellipse at center, transparent 60%, rgba(0,0,0,0.5) 100%);
pointer-events: none;
z-index: 998;
}
main {
position: relative; z-index: 1;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 32px 16px;
gap: 40px;
}
/* Pixel avatar */
.avatar {
width: 192px; height: 192px;
filter: drop-shadow(0 0 12px var(--pink));
animation: bob 2.4s ease-in-out infinite;
}
@keyframes bob {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-8px); }
}
h1 {
font-size: clamp(1.4rem, 5vw, 2.2rem);
text-align: center;
line-height: 1.4;
text-shadow: 4px 4px 0 var(--pink);
letter-spacing: 0.05em;
}
h1 .cursor {
display: inline-block;
width: 0.6em;
height: 1em;
background: var(--cyan);
vertical-align: -0.1em;
margin-left: 0.1em;
animation: blink 1s step-end infinite;
}
@keyframes blink {
0%, 50% { opacity: 1; }
51%, 100% { opacity: 0; }
}
.intro {
font-family: 'VT323', monospace;
font-size: clamp(1.1rem, 2.5vw, 1.5rem);
text-align: center;
max-width: 540px;
line-height: 1.5;
color: #D8D5FF;
}
.intro span { color: var(--yellow); }
/* Pixel buttons grid */
.links {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 14px;
max-width: 720px;
width: 100%;
}
.pixel-btn {
position: relative;
display: flex;
align-items: center;
gap: 12px;
padding: 14px 16px;
background: var(--bg2);
color: var(--fg);
text-decoration: none;
font-family: 'Press Start 2P', monospace;
font-size: 0.7rem;
border: 3px solid var(--fg);
box-shadow: 6px 6px 0 var(--pink);
transition: transform 0.08s, box-shadow 0.08s, background 0.12s;
cursor: pointer;
image-rendering: pixelated;
}
.pixel-btn:hover {
transform: translate(2px, 2px);
box-shadow: 4px 4px 0 var(--cyan);
background: #221764;
}
.pixel-btn:active {
transform: translate(6px, 6px);
box-shadow: 0 0 0 var(--cyan);
}
.pixel-btn .icon {
width: 24px; height: 24px;
flex-shrink: 0;
}
.pixel-btn .label { line-height: 1.3; }
/* Floating decorations */
.deco {
position: absolute;
width: 64px; height: 64px;
animation: float 6s ease-in-out infinite;
}
.deco.cloud-1 { top: 8%; left: 5%; animation-delay: 0s; }
.deco.cloud-2 { top: 14%; right: 8%; animation-delay: -2s; width: 80px; height: 80px; }
.deco.cloud-3 { bottom: 12%; left: 10%; animation-delay: -4s; }
@keyframes float {
0%, 100% { transform: translate(0, 0); }
50% { transform: translate(8px, -10px); }
}
footer {
font-family: 'VT323', monospace;
font-size: 1rem;
color: #8b86c4;
text-align: center;
padding: 24px;
position: relative; z-index: 1;
}
footer .key {
display: inline-block;
padding: 2px 6px;
border: 1px solid #8b86c4;
border-radius: 3px;
background: rgba(255,255,255,0.05);
color: var(--fg);
}
@media (max-width: 480px) {
.deco { display: none; }
.pixel-btn { font-size: 0.6rem; box-shadow: 4px 4px 0 var(--pink); }
}
</style>
</head>
<body>
<div class="stars"></div>
<div class="glow-vignette"></div>
<main>
<!-- Decorative pixel clouds -->
<svg class="deco cloud-1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" shape-rendering="crispEdges">
<rect x="3" y="6" width="10" height="4" fill="#C084FC"/>
<rect x="4" y="5" width="8" height="1" fill="#C084FC"/>
<rect x="5" y="4" width="2" height="1" fill="#C084FC"/>
<rect x="9" y="4" width="3" height="1" fill="#C084FC"/>
<rect x="2" y="7" width="1" height="2" fill="#C084FC"/>
<rect x="13" y="7" width="1" height="2" fill="#C084FC"/>
</svg>
<svg class="deco cloud-2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" shape-rendering="crispEdges">
<rect x="3" y="6" width="10" height="4" fill="#4CE0FF"/>
<rect x="4" y="5" width="8" height="1" fill="#4CE0FF"/>
<rect x="5" y="4" width="2" height="1" fill="#4CE0FF"/>
<rect x="9" y="4" width="3" height="1" fill="#4CE0FF"/>
<rect x="2" y="7" width="1" height="2" fill="#4CE0FF"/>
<rect x="13" y="7" width="1" height="2" fill="#4CE0FF"/>
</svg>
<svg class="deco cloud-3" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" shape-rendering="crispEdges">
<rect x="6" y="2" width="2" height="2" fill="#FFE45A"/>
<rect x="5" y="4" width="4" height="1" fill="#FFE45A"/>
<rect x="3" y="6" width="2" height="2" fill="#FFE45A"/>
<rect x="9" y="6" width="2" height="2" fill="#FFE45A"/>
<rect x="5" y="8" width="4" height="1" fill="#FFE45A"/>
<rect x="6" y="10" width="2" height="2" fill="#FFE45A"/>
</svg>
<!-- Pixel avatar (a friendly retro face) -->
<svg class="avatar" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" shape-rendering="crispEdges">
<!-- Hair top -->
<rect x="3" y="1" width="10" height="1" fill="#3A2A1A"/>
<rect x="2" y="2" width="12" height="1" fill="#3A2A1A"/>
<rect x="2" y="3" width="2" height="1" fill="#3A2A1A"/>
<rect x="12" y="3" width="2" height="1" fill="#3A2A1A"/>
<!-- Face skin -->
<rect x="4" y="3" width="8" height="1" fill="#FFCFA3"/>
<rect x="3" y="4" width="10" height="6" fill="#FFCFA3"/>
<rect x="4" y="10" width="8" height="1" fill="#FFCFA3"/>
<!-- Eyes -->
<rect x="5" y="6" width="1" height="2" fill="#0E0B1F"/>
<rect x="10" y="6" width="1" height="2" fill="#0E0B1F"/>
<!-- Cheeks -->
<rect x="4" y="8" width="1" height="1" fill="#FF8DBE"/>
<rect x="11" y="8" width="1" height="1" fill="#FF8DBE"/>
<!-- Smile -->
<rect x="6" y="9" width="4" height="1" fill="#C45A6E"/>
<rect x="7" y="10" width="2" height="1" fill="#C45A6E"/>
<!-- Neck/body suggestion -->
<rect x="5" y="11" width="6" height="1" fill="#FFCFA3"/>
<rect x="4" y="12" width="8" height="4" fill="#FF3C8F"/>
<rect x="3" y="13" width="1" height="3" fill="#FF3C8F"/>
<rect x="12" y="13" width="1" height="3" fill="#FF3C8F"/>
<!-- Shirt detail -->
<rect x="7" y="13" width="2" height="1" fill="#FFE45A"/>
</svg>
<h1>hi, i'm jappit<span class="cursor"></span></h1>
<p class="intro">
coder · pixel pusher · italian developer<br>
<span>since the 90s</span>, still making little apps for the joy of it.
</p>
<nav class="links" id="links"></nav>
</main>
<footer>
press <span class="key">↑</span> <span class="key">↑</span> <span class="key">↓</span> <span class="key">↓</span> <span class="key">←</span> <span class="key">→</span> <span class="key">←</span> <span class="key">→</span> <span class="key">B</span> <span class="key">A</span>
</footer>
<script>
// Link definitions
const LINKS = [
{ label: 'info@jappit.com', icon: 'mail', href: 'mailto:info@jappit.com', color: '#FF3C8F' },
];
// Pixel icon SVGs (16x16 viewBox)
const ICONS = {
apps: `<rect x="2" y="2" width="5" height="5" fill="VAR"/><rect x="9" y="2" width="5" height="5" fill="VAR"/><rect x="2" y="9" width="5" height="5" fill="VAR"/><rect x="9" y="9" width="5" height="5" fill="VAR"/>`,
x: `<rect x="2" y="2" width="2" height="2" fill="VAR"/><rect x="4" y="4" width="2" height="2" fill="VAR"/><rect x="6" y="6" width="2" height="2" fill="VAR"/><rect x="8" y="8" width="2" height="2" fill="VAR"/><rect x="10" y="10" width="2" height="2" fill="VAR"/><rect x="12" y="12" width="2" height="2" fill="VAR"/><rect x="12" y="2" width="2" height="2" fill="VAR"/><rect x="10" y="4" width="2" height="2" fill="VAR"/><rect x="4" y="10" width="2" height="2" fill="VAR"/><rect x="2" y="12" width="2" height="2" fill="VAR"/>`,
gh: `<rect x="4" y="3" width="8" height="1" fill="VAR"/><rect x="3" y="4" width="10" height="6" fill="VAR"/><rect x="3" y="10" width="3" height="3" fill="VAR"/><rect x="10" y="10" width="3" height="3" fill="VAR"/><rect x="5" y="6" width="2" height="2" fill="#0E0B1F"/><rect x="9" y="6" width="2" height="2" fill="#0E0B1F"/>`,
mail: `<rect x="2" y="4" width="12" height="8" fill="VAR"/><rect x="3" y="5" width="10" height="1" fill="#0E0B1F"/><rect x="4" y="6" width="8" height="1" fill="#0E0B1F"/><rect x="5" y="7" width="6" height="1" fill="#0E0B1F"/><rect x="6" y="8" width="4" height="1" fill="#0E0B1F"/>`,
};
const linksEl = document.getElementById('links');
LINKS.forEach(l => {
const a = document.createElement('a');
a.className = 'pixel-btn';
a.href = l.href;
if (l.href.startsWith('http')) { a.target = '_blank'; a.rel = 'noopener'; }
a.innerHTML = `
<svg class="icon" viewBox="0 0 16 16" shape-rendering="crispEdges">
${ICONS[l.icon].replace(/VAR/g, l.color)}
</svg>
<span class="label">${l.label}</span>
`;
linksEl.appendChild(a);
});
// Konami code easter egg
const code = ['ArrowUp','ArrowUp','ArrowDown','ArrowDown','ArrowLeft','ArrowRight','ArrowLeft','ArrowRight','b','a'];
let pos = 0;
document.addEventListener('keydown', (e) => {
const k = e.key.length === 1 ? e.key.toLowerCase() : e.key;
if (k === code[pos]) {
pos++;
if (pos === code.length) {
document.body.style.animation = 'spin 1.2s ease-out';
setTimeout(() => { document.body.style.animation = ''; }, 1200);
alert('🎮 1up! welcome back to the 90s.');
pos = 0;
}
} else {
pos = 0;
}
});
const style = document.createElement('style');
style.textContent = '@keyframes spin { 0%{transform:rotate(0)} 100%{transform:rotate(360deg)} }';
document.head.appendChild(style);
</script>
</body>
</html>