# Villa Nocturno — postavljanje na vlastiti hosting

Paket sadrži optimiziranu PHP verziju weba (`19e71e3`, 12. 10. 2026.) za **https://villa-nocturno.hr**, svih osam stranica na **HR, EN i DE**, fotografije, ilustracije, tlocrte, stilove, JavaScript, cookie privolu i ispravljene naknade za kućne ljubimce. **IT verzija nije implementirana.**

## Preduvjeti

- PHP **8.3 ili noviji**; nema Composer, npm, Python ni build ovisnosti.
- Apache 2.4 s `mod_rewrite`, dozvoljenim `.htaccess` datotekama i po mogućnosti `mod_headers`. LiteSpeed hosting obično podržava ista pravila.
- HTTPS certifikat za domenu.
- Baza podataka nije potrebna. Web ne zahtijeva Manus račun, API ključ ni vezu s razvojnim Previewom.
- Preporuka: datoteke s dozvolom `644`, mape `755`; nikada `777`.

## 1. Preporučeno: document root je mapa public

Raspakirajte paket izvan javnog direktorija i podesite javnu mapu domene (document root) na **`Villa-Nocturno/public`**.

```text
Villa-Nocturno/
├── app/                 PHP predlošci i zajedničke postavke — nejavno
├── content/             tekstovi HR/EN/DE i cjenik — nejavno
├── public/              samo ova mapa je javna
│   ├── .htaccess         uključiti i ovu skrivenu datoteku
│   ├── index.php
│   ├── router.php        za lokalni razvoj, javni pristup blokiran
│   ├── styles.css
│   ├── app.js
│   └── assets/
├── README.md            upute za uređivanje
├── POSTAVLJANJE-NA-HOSTING.md
├── Dockerfile           opcionalno, nije potreban za običan hosting
└── dokumentacija/       ispravljeni PDF cjenik, nije javna web mapa
```

**Nemojte postaviti cijelu mapu `Villa-Nocturno` kao document root.** Mape `app/` i `content/` moraju ostati izvan javne mape. Cijeli web treba biti u korijenu vlastite domene ili poddomene, npr. `https://vasa-domena.hr/hr/`, jer resursi i rute koriste putanje od korijena (`/styles.css`, `/assets/...`). Ne postavljajte ga u podmapu poput `/villa/` bez prilagodbe koda.

## 2. cPanel ili hosting s fiksnim public_html direktorijem

Ako domena ima fiksni document root `public_html`:

1. **Sadržaj** mape `public/` prenesite u `public_html/` — ne samu mapu `public`.
2. Mape `app/` i `content/` prenesite jednu razinu iznad `public_html/`, kao njegove susjedne mape.
3. Provjerite da je prenesena skrivena datoteka `.htaccess`. U FTP klijentu/file manageru omogućite prikaz skrivenih datoteka.
4. README, Dockerfile i dokumentaciju ne trebate stavljati u javnu mapu.

Primjer:

```text
/home/korisnik/
├── app/
├── content/
└── public_html/
    ├── .htaccess
    ├── index.php
    ├── styles.css
    ├── app.js
    └── assets/
```

`index.php` automatski traži `app/` i `content/` jednu razinu iznad sebe. Ako hosting zabranjuje takav raspored ili PHP kroz `open_basedir` ne smije čitati te mape, od podrške hostinga tražite podešavanje document roota/pristupa. Nemojte radi toga javno izložiti sadržajne mape niti postavljati dozvole `777`. Prije prijenosa napravite sigurnosnu kopiju postojećeg weba i provjerite da na hostingu već ne postoje druge mape istog naziva koje ne smijete prepisati.

## 3. Što provjeriti nakon prijenosa

- `/` preusmjerava na `/hr/`.
- `/hr/`, `/en/` i `/de/` prikazuju naslovnicu.
- `/hr/kuca/`, `/hr/vani/`, `/hr/obitelji/`, `/hr/parenzana/`, `/hr/istra/`, `/hr/boravak/`, `/hr/kontakt/` rade. EN: `/en/the-house/`, `/en/outdoors/`, `/en/families-and-pets/`, `/en/parenzana/`, `/en/location/`, `/en/your-stay/`, `/en/contact/`. DE: `/de/das-haus/`, `/de/aussenbereich/`, `/de/familien-und-haustiere/`, `/de/parenzana/`, `/de/lage/`, `/de/aufenthalt/`, `/de/kontakt/`. Stare EN/DE hrvatske slugove PHP trajno preusmjerava (301).
- `/health` prikazuje `ok`.
- Fotografije, logo, tlocrt, pattern, fontovi i animacije prikazuju se; menu i footer poveznice rade.
- `/it/boravak/` vraća 404 jer talijanski prijevod nije izrađen.
- Nepostojeći URL i `/router.php` vraćaju 404. Mape `app/` i `content/` nisu javno dostupne.
- Naknade za ljubimce u sva tri jezika: **100 € po boravku za jednu životinju, 150 € za dvije i 200 € za tri**, uz najavu, najviše tri životinje i kućni red.

Ako naslovnica radi, ali podstranice vraćaju 404, provjerite `.htaccess`, `mod_rewrite` i `AllowOverride`. Ako server vraća 500 zbog direktive `Options`, hosting može zabranjivati njezino postavljanje: zatražite od podrške ekvivalentnu konfiguraciju (isključeni directory listing i MultiViews). Na Nginx hostingu `.htaccess` se ne primjenjuje; administrator mora postaviti document root na `public/`, routing `try_files $uri $uri/ /index.php?$query_string`, PHP-FPM i blokirati izravan pristup `router.php`. Na Nginxu izričito proslijedite `/robots.txt` i `/sitemap.xml` na `index.php` želite li uvijek dinamično generiranje; inače će se poslužiti priložene statičke fallback datoteke.

## 4. Samostalno uređivanje

Detaljan vodič je u **`README.md`**.

- Tekstovi naslovnice: `content/home.php`.
- Svaka podstranica: `content/pages/ime.php`.
- Cjenik i uvjeti: `content/pages/boravak.php`.
- E-mail, telefon, adresa i zajedničke oznake: `app/settings.php`.
- Izgled: `public/styles.css` (odnosno `public_html/styles.css` ako koristite drugu opciju).
- Interakcije: `public/app.js`.

Svaki jezik uređuje se zasebno. Nakon izmjene PHP teksta provjerite sintaksu naredbom `php -l putanja/datoteka.php`. Izmjene su vidljive bez build koraka; ako hosting agresivno zadržava PHP kroz OPcache, očistite cache putem panela hostinga.

## 5. Važno prije javnog puštanja

- Kontakt obrazac trenutno **otvara gostovu e-mail aplikaciju** (`mailto`); ne šalje poruke serverski. Postavljanje na hosting neće automatski uključiti SMTP ili dostavu poruka.
- Rezervacijska forma vodi na Kontakt; **Rentlio nije povezan**. Nema naplate ni automatske potvrde rezervacije.
- EN/DE su radni prijevodi i preporučena je stručna lektura.
- Fontovi Cormorant Garamond i Jost sada se učitavaju lokalno iz paketa, uz licence. Sve fotografije su WebP. JPEG kopije služe samo za društvene kartice, PNG tlocrtni izvornici otvaraju se na klik.
- Cookie mehanizam omogućuje prihvaćanje ili odbijanje neobaveznih kolačića. Analitika nije automatski uključena tim izborom; nema pripremljene integracije za praćenje.
- Canonical, apsolutni hreflang, OG/Twitter kartice i sitemap/robots sada su pripremljeni za **https://villa-nocturno.hr**. Domena je u `app/settings.php` → `seo.origin`. Pravne informacije/pravilnik o privatnosti dopunite prema potrebama. Rich results i indeksiranje nisu zajamčeni samo prisutnošću oznaka.
- `.htaccess` normalizira www.villa-nocturno.hr i HTTP prema https://villa-nocturno.hr samo za produkcijske hostove. DNS i HTTPS certifikat treba podesiti na hostingu; na proxyju provjeriti da nema petlje preusmjeravanja.
- Provjerite gzip/Brotli kompresiju na hostingu. Apache pravila uključuju gzip gdje je `mod_deflate` dostupan.
- CSS je inline/minificiran za brži prvi prikaz; i dalje uređujte `public/styles.css` — PHP prepoznaje izmjene i koristi novi izvor bez obveznog builda.
- Lokalna mobilna Lighthouse usporedba pokazala je 75 → 92, FCP oko 3,19 → 1,06 s i LCP 4,90 → 3,31 s. To nisu mjerenja konačnog hostinga niti jamstvo iste ocjene.

## 6. Lokalni pregled prije hostinga (opcionalno)

U korijenu raspakiranog paketa, uz instaliran PHP:

```bash
php -S 127.0.0.1:3000 -t public public/router.php
```

Otvorite `http://localhost:3000/hr/`. Taj razvojni server nije zamjena za produkcijski Apache/PHP-FPM hosting.
