« 1 2
Autor Zpráva
quatzael
Profil
Str4wberry:
Jinak jak je tedy nyní aplikace řešena? Soubor moje-domena.cz/jedna-z-dvaceti-podslozek/jedna-z-sesti-podpodslozek/index.php načítá nějaké společné části z ../../neco.php atp.?
Přesně tak.
quatzael
Profil
Str4wberry:
No ale stejně to nechápu, jak s tím .htaccess dosáhnu toho, že se to bude chovat tak jako bych to měl ve složkách.. a hlavně nechápu co to vylepší, stejně ty soubory index.php někde budu muset mít..
Amunak
Profil
quatzael:
Něco si o tom, proboha, přečti. Stačí ti jediný index, na který nasměruješ všechny požadavky. Virtuální cesta se pak indexu předá jako parametr, a v PHP si s ní pak už děláš co chceš a includuješ stránky podle toho, jak je potřebuješ.

Jde takhle načítat třeba i styly a skripty, akorát to většinou není potřeba, protože to zbytečně zatěžuje server. Ale jde takhle dělat nějaké dodatečné úpravy kódu - třeba nějaká jednoduchá komprimace, když na serveru jinak není k dispozici gzip.
quatzael
Profil
Amunak:
No ale kde si mám o tom přečíst?? Hledám to na netu, povídání je okolo toho hodně, ale nikde nevysvětlujou jak se to ve skutečnosti používá..
Ani v učebnicích nic..

Stačí ti jediný index, na který nasměruješ všechny požadavky.
Chceš říct, že stačí jedinej index?? jako např: moje-domena.cz/index.php??
Ale co stěma ostatníma "indexama", to, že nebudou na serveru v podsložkách, snad neznamená, že nebudou nikde jinde na serveru. Stejně je tam budu někde muset mít..

Prosím o polopatičtější vysvětlení.. hlavně to jak mám zajistit, aby když někdo do prohlížeče zadá adresu www.moje-domena.cz/podslozka1/podslozka2, aby se mu objevila stránka, i přesto, že na serveru taková podslozka neexistuje..
jenikkozak
Profil
quatzael:
No ale kde si mám o tom přečíst??
Dobrý začátek je článek Mod_rewrite

Chceš říct, že stačí jedinej index?
Nejspíš ano.

A za větou se (až na výjimku) dělá jen jedno interpukční znaménko.
Str4wberry
Profil
Možná by pomohl lepší popis současné aplikace.

Struktura stránek je tedy tvořena fysickými adresáři a v každém je index.php. Co dělají ty soubory index.php? V nich je HTML kód (obsah) stránek a připojují se do nich nějaké společné části (hlavička, menu, …), nebo jsou jen kvůli hezkým adresám a pouze připojují samotnou aplikaci, která sestaví potřebný kód?
quatzael
Profil
Str4wberry:
Ano, je to tak, že převážně jde o to, že v těch podsložkách jsou soubory index.php, ve kterých je kromě jejich vlastního kódu includované společné části jako hlavička, menu apod.. Mimo to také includujou různě svoje části (podle různých podmínek v kódu, nic složitýho)..
quatzael
Profil
Str4wberry:
A jak tedy funguje to podstrkávání?

Řekněme, že tam budu mít tohleto:

RewriteEngine on
RewriteRule moje-domena.cz/podstranka/ moje-domena.cz/index-podstranky.php

Jak se to bude chovat, když:
a) někde do jiného scriptu vložím odkaz (přímo jako <a> nebo jako header("Location: ...) ??
b) když uživatel do tý adresy zadá ještě index.php, tedy že napíše: moje-domena.cz/podstranka/index.php ??
c) stačí tam mít jen tyhle dva řádky, aby to fungovalo ??
Amunak
Profil
quatzael:
Tady na diskuzí máme univerzální pravidlo pro rewrite. Do skriptu získáš proměnnou $url, ze které zjistíš sekci/stránku webu, a podle toho se zachováš. Můžeš tam mít něco takového:
<?php //index.php

$url = explode("/", $_GET["url"]);
// Zkontroluju jestli má cesta jen jednu součást, potom jestli ta stránka existuje, a když jo, tak jí vložím...
if(count($url) === 1 && file_exists('stranky/' . $url[0] . '.php'))
  require('stranky/' . $url[0] . '.php');
else
  if(count($url) === 0)
    require('inc/index.php'); //je to úvodní stránka webu
  else
    require('inc/404.php'); //stránka neexistuje nebo má URL moc parametrů, vyhodím 404

No a stránky pak máš v adresáří stranky/; stránky, které nemají být přístupné přímo přes URL pak třeba v inc/, to je už jedno. Tenhle skript počítá s tím, že URL bude vždy jednoduchá, bez jakýchkoliv dalších parametrů (tedy parametrů v té "pěkné URL"). Na jednoduché weby to stačí.
Str4wberry
Profil
Reakce na quatzaela:
Aha, jestli tady něco neřešíme zbytečně…

Pokud je web skoro obyčejné veřejně přístupné HTML, kde se akorát různé části sestavují příkazem include dohromady. Tj. nejsou tam nějaká citlivá data / přístup k DB / atp., přesouvat to všechno mimo veřejný adresář může být úplně zbytečné. Pokud tam pár souborů citlivá data obsahuje, přesuňte do neveřejné části jenom tyto soubory.
quatzael
Profil
Str4wberry:
No, citlivá data tam jsou (z databáze), ale to můžu všechno přesunout vedle..
Spíš by mě zajímalo, jestli by se dalo to .htaccess využít praktičtěji. Například pro přesměrování na titulní stranu pokud uživatel zadá nějakou neexistující podstránku. Případně by se mi taky hodilo, aby se nějaká podstránka zobrazovala uživatelům jinak než konkrétně jen mě (třeba podle IP adresy). Tzn. aby se jim tam zobrazil nějaký jednoduchý obsah mezitím co já na finalní podobě stránky budu pracovat a až to dokončím, že by se to jen přepsalo v tom .htaccess
MyShare
Profil
quatzael:
Spíš by mě zajímalo, jestli by se dalo to .htaccess využít praktičtěji.
Podľa mňa už len to že používaš .htaccess je praktickejšie :)

Například pro přesměrování na titulní stranu pokud uživatel zadá nějakou neexistující podstránku.
Lepšie je mu naznačiť, že zadal stránku ktorá neexistuje a to pomocou taktiež .htaccess konkrétne
ErrorDocument 404 /404.php
a povedzme dokoment 404.php
<?php
<h1> 404 Neexistujúca stránka </h1>
<p>
Hooops zdá sa, že ste narazili na neexistujúcu stránku
</p>
<p>
Prosím pokračujte <a href="tvoja domena alebo zlozka"> Kliknutím Sem</a>
</p>
?>
jenikkozak
Profil
MyShare:
Ovšem bez znaků ohraničujících blok PHP skriptu.
MyShare
Profil
jenikkozak:
Ovšem bez znaků ohraničujících blok PHP skriptu.
Samozrejme...
tie tam nemusia byť
jenikkozak
Profil
Nesmějí. Tohle ti přece vyhodí chybu v syntaxi.
MyShare
Profil
jenikkozak:
Nesmějí. Tohle ti přece vyhodí chybu v syntaxi.
Sakra máš recht ja som to obalil do celého jedine ak
<?php
// prípadný kód <-- ak tam nebude kód tak bez <?php ?>
?>
<h1> 404 Neexistujúca stránka </h1>
<p>
Hooops zdá sa, že ste narazili na neexistujúcu stránku
</p>
<p>
Prosím pokračujte <a href="tvoja domena alebo zlozka"> Kliknutím Sem</a>
</p>
Ospravedlňujem sa
« 1 2

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: