Php oldal HTML-ként megjelenítve
2008-09-23T12:58:47+02:00
2008-09-29T17:36:20+02:00
2022-07-19T03:41:44+02:00
19710212
Sziasztok!

Miként kell megírni a htaccess fájlt, hogy egy index.html fájlban futtatni lehessen a php kódokat.
Arra gondolok ami itt a fórumon is van, hogy az URL + jelekkel van ellátva, és html ként jelenik meg az URL sávban, de mégis dinamikus oldal.

Amit javasoltak már, csak nem igen tudom miként működik az ez:
AddType application/x-httpd-php .html

Ezt beraktam egy .htaccess fájlba és a html lapok mellé raktam a tárhelyre. Azóta le akarja tölteni az oldalt, nem nyitja meg. :)
Köszi.
Mutasd a teljes hozzászólást!
Sehogy a .htaccess-t úgyhagyod, azt ne módosítsd azzal többé nem kell foglalkoznod

az index.php-t írod meg így:
(ez egy nagyon gyenge és könnyeb hackelhető, csak azért írom, hogy megértsd)

<? include(substr($_GET['params'],0,-5).'.php'); ?>

azaz megnézed mi jött a params paraméterbe
http://www.akarmi.hu/akarmi-tegnap.html estén a valós meghívás ez
http://www.akarmi.hu/index.php?params=akarmi-tegnap.html

azaz a params-ban ez van "akarmi-tegnap.html"

a substr-el levágod az utolsó 5 karaktert (.html) és átírod '.php'-re és ezt includolod.

fullosabb php
<? $HtmlToPHP=$_GET['params']; $HtmlToPHP=substr($HtmlToPHP,0,-5); $HtmlToPHP.='.php'; include($HtmlToPHP); ?>

a biztonság kevéért ellenőrizd, hogy létezik-e a fájl, aztán hogy nem akar-e olyat includolni amit nem szabadna neki, pl. nehogy visszaharapjon azaz a
http://www.akarmi.hu/index.html-t ne tudja meghívni

azaz inkább én így csinálnám:

<? $HtmlToPHP=$_GET['params']; $HtmlToPHP=substr($HtmlToPHP,0,-5); switch ($HtmlToPHP) { case 'index': $HtmlToPHP='fooldal.php';break; case 'forum': $HtmlToPHP='forum.php';break; case 'valami': $HtmlToPHP='1/valami.php';break; default:$HtmlToPHP='404.php'; } include($HtmlToPHP); ?>
Mutasd a teljes hozzászólást!

  • Több izgalmat vet fel a kérdésed. :)

    Ez csak akkor fog megfelelően működni, ha a webserver rád vonatkozó virtualhost beállításában szerepel egy ilyen:
    AllowOverride FileInfo
    (magyarázat: mod_mime - Apache HTTP Server Version 2.2

    Egyébként annak megvalósítására, amit szeretnél, szerintem ez teljesen felesleges. Többet érsz azzal, ha a tárhelyed gyökerében a .htaccess file a következőket tartalmazza:
    DirectoryIndex /index.php
    (hogy ennek legyen hatása .htaccess file-ban, a rád vonatkozó szolgáltatói virtualhost configban benne kell lennie ennek:
    AllowOverride Indexes)
    magyarázat: mod_dir - Apache HTTP Server Version 2.2

    Jelenség az lesz, hogy ha modnjuk a címsorba valaki ír egy ilyet: http://www.telapod.hu/akarmi1/akarmi2/akarmi3 mindig a www.sandorinformatika.hu kerül meghívásra, viszont a címsorban ez nem fog látszódni. Utána a PHP-n belül környezeti változók segítségével hipp-hopp megtudhatod, hogy mi volt a teljes cím. (ha jól emlékszem, akkor $_SERVER["REQUEST_URI"] változóban fog ott csücsülni, amit keresel. :)

    remélem segített...
    Mutasd a teljes hozzászólást!
  • Nem a te hibád, de nem segített. Sajnos az én hozzá nem értésem miatt van.
    A saját gépen elég volt az Apachba-ba berakni egy plusz sort, de ezt nyilván a bérelt szerveren nem tudom megtenni.
    Mutasd a teljes hozzászólást!
  • <html> <head> <title></title> </head> <body> <?php echo php kód ?> <div id="html"> <h1>html kód</h1> </div> </body> </html>

    Az egészet elmented index.php néven és működik a html oldalba ágyazott php kód.
    Mutasd a teljes hozzászólást!
  • A lényeg, hogy html kiterjesztéssel kell mentenem, és úgy kell működni a php kódoknak.
    Mutasd a teljes hozzászólást!
  • Egyéni kiterjesztésű PHP fájlok

    A fenti lehetőséget csak a saját szervereden használhatod.
    Ha szolgáltatónál vagy, akkor nem hiszem, hogy megoldható amit akarsz.
    Mutasd a teljes hozzászólást!
  • A szolgálató szerverén ebben az esetben indifferens a kiterjesztés, szerintem.
    Ha beírod a böngészőbe:
    www.enlapom.hu vagy www.enlapom.szolgaltato.hu
    akkor a webroot-ban található index.* fájlt fogyja megjeleníteni, ebből a felhasználók semmit sem fognak észrevenni.

    Ha a valami extra html specifikus kódot akarsz még a php mellett futtatni akkor elképzelhető, hogy szükséges az a html kiterjesztés, de...
    Írd meg az egész oldalt php-ban

    <?php echo php kód; print "<html> <head> <title></title> </head> <body> <div id=\"html\"> <h1>html kód</h1> </div> </body> </html>"; ?>

    A lényeg, hogy az olyan tag-ekben ahol attribútumokat adsz meg az idézőjelek elé tegyél backslash-t (fordított per).

    AddType application/x-httpd-php .html Ezt beraktam egy .htaccess fájlba

    Mert nem a .htaccess-be kell betenni, hanem az apache.httpd.conf-ba. Megint csak a szolgáltató beállításait kellene babrálni. Még egy fontos, ingyenes tárhelyek figyelmen kívül hagyják (a legtöbb) a .htaccess fájlt, mások fel sem engedik tölteni.


    Try adding that code lines in apache.httpd.conf

    <IfModule mod_mime.c>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .phtml
    AddType application/x-httpd-php .php3
    AddType application/x-httpd-php .php4
    AddType application/x-httpd-php .html
    AddType application/x-httpd-php-source .phps
    </IfModule>
    Save it and restart apache with command : apachectl restart
    you have more info at PHP :: Bug #27580 :: AddType application/x-httpd-php .html and apache2 log errors


    A titkolózás helyett elárulhatnád, miért van erre szükséged.
    De végeredményben a prog.hu-n vagy a tutorial.hu-n több eséllyel kapsz értékelhető választ, ott laknak a programozók. Ide mi csak a vasat ütni járunk.

    Esetleg:
    <html> <head> <title>index.html</title> <style type="text/css">body,html{background-color:transparent;}</style> </head> <body> <iframe src="php/elso.php" name="main" width="100%" height="100%" frameborder="0" allowtransparency="true"></iframe> <iframe src="php/masodik.php" name="main" width="100%" height="100%" frameborder="0" allowtransparency="true"></iframe> </body> </html>
    Mutasd a teljes hozzászólást!
  • Nincs ezen semmi titkolózni való.
    Ez nem egy ingyenes tárhely, hanem bérelt tárhely, de attól még nem enged a szolgáltató be a conf-ba. Nyilván.
    A saját gépemen persze beállítottam a fenti módon a confot, és remekül müxik.
    Viszont a "megbízóm" kereső barát oldalakat akar, és ragaszkodik a html kiterjesztésű oldalakhoz.

    A prog.hu-ra raktam először a kérdést, de ott nyomban zárolták, hogy ez üzemeltetés, és a PC fórumra vigyem. :)
    Mutasd a teljes hozzászólást!
  • A "titkolózást" idézőjelben értettem és arra voltam csak kíváncsi, hogy miért szükséges a .html kiterjesztés. A keresőbarát url és a html kiterjesztés nincs közvetlen összefüggésben! Olvasgass a SEO forumokon, vagy keress rá a "SEO" "SEO Quake" "Kerső optimalizálás" "Keresőbarát URL" vagy hasonló kifejezésekre. Egyébként a php feldolgozása után ugyan úgy tiszta html kódot fogsz kapni.

    Ha nem akarsz <iframe>-t és hasonló [index.php?module=valami] akkor használd ezt:
    PHP weboldal motor
    Mutasd a teljes hozzászólást!
  • Ez a te barátod:
    egy .htaccess fájlba ezt tedd bele, ezt szinte minden szerveren engedik:

    <IfModule mod_rewrite.c> RewriteEngine on ReWriteRule ^(.*)$ system.php?params=$1 [QSA] </IfModule>

    Aztán már nincs más dolgod, mint csinálsz egy PHP függvényt ami átalakítja meg vissza a dolgokat

    mindent a $_GET['params']-ban megtalálsz egy string ként, és kedved szerint szétvágod, pl-kre (és a régi ?valami=120 megoldás is működik)

    egy másik fügvénnyel pedig szépen le generálod a linkeket pl.
    ami eddig "http://www.teoldalad.hu/index.php?valami=120&semmi=4000" ből csináljon
    "http://www.teoldalad.hu/valami=120/semmi=4000/index.html"

    de akár azt is megtudod így csinálni, hogy ez legyen
    http://www.teoldalad.hu/valami+120+semmi+4000.html
    Mutasd a teljes hozzászólást!
  • "Viszont a "megbízóm" kereső barát oldalakat akar, és ragaszkodik a html kiterjesztésű oldalakhoz. "

    Jópár portált megcsináltam már, de olyat még nem hallottam soha, hogy a html kiterjesztésű file-ok "keresőbarátabbak" lennének másoknál.

    Szerintem az égvilágon semmi jelentősége nincs.
    inkább a <meta> és a HTML fejléc a lényeg.
    Mutasd a teljes hozzászólást!

  • inkább a <meta> és a HTML fejléc a lényeg.

    Akkor ne keresőoptimalizálj...

    A meta (főleg a description) célszerű, a keywords-nek igazából szinte semmi értelme.
    A title valóban fontos, de önmagában ezektől még top100-ba sem kerülsz, ha csak nem olyan kulcsszavakra optimalizálsz, amikre más senki...

    Az igazán fontos (többek között) a linképítés.
    De ebbe most nem menjünk bele.

    -----
    Előnyösebb (és szebb) a statikusnak látszó oldal.

    pl.
    http://pcforum.hu/tudastar/47070-11/Php+oldal+HTML-kent+megjelenitve.html vs. http://pcforum.hu/tudastar.php?tema_id=47070

    Arról nem is beszélve, hogy így az url-be is szebben bekerülhetnek a fontos kulcsszavak.
    Mutasd a teljes hozzászólást!
  • Igen a lényeg, hogy így nézzen ki az URL sáv:
    http://www.teoldalad.hu/valami+120+semmi+4000.html

    Pl.: van egy index.php oldalam, erre mutat a link, amikor rá katt akkor az url sávban ennek kéne látszania:
    http://www.teoldalad.hu/index.html

    Vagy legyen ez az oldal neve: akarmi-tegnap.php és amikor katt, akkor az URL sávban akarmi-tegnap.html

    Hogyan módosul a mod_rewrite?
    <IfModule mod_rewrite.c>
    RewriteEngine on
    ReWriteRule ^(.*)$ index.php [QSA]
    ReWriteRule ^(.*)$ akarmi-tegnap.php [QSA]
    </IfModule>

    Minden oldalra kell írnom egy ReWriteRule-t ?
    Mert ugye több xxxx.php oldalam van.

    Köszi
    Mutasd a teljes hozzászólást!
  • Sehogy a .htaccess-t úgyhagyod, azt ne módosítsd azzal többé nem kell foglalkoznod

    az index.php-t írod meg így:
    (ez egy nagyon gyenge és könnyeb hackelhető, csak azért írom, hogy megértsd)

    <? include(substr($_GET['params'],0,-5).'.php'); ?>

    azaz megnézed mi jött a params paraméterbe
    http://www.akarmi.hu/akarmi-tegnap.html estén a valós meghívás ez
    http://www.akarmi.hu/index.php?params=akarmi-tegnap.html

    azaz a params-ban ez van "akarmi-tegnap.html"

    a substr-el levágod az utolsó 5 karaktert (.html) és átírod '.php'-re és ezt includolod.

    fullosabb php
    <? $HtmlToPHP=$_GET['params']; $HtmlToPHP=substr($HtmlToPHP,0,-5); $HtmlToPHP.='.php'; include($HtmlToPHP); ?>

    a biztonság kevéért ellenőrizd, hogy létezik-e a fájl, aztán hogy nem akar-e olyat includolni amit nem szabadna neki, pl. nehogy visszaharapjon azaz a
    http://www.akarmi.hu/index.html-t ne tudja meghívni

    azaz inkább én így csinálnám:

    <? $HtmlToPHP=$_GET['params']; $HtmlToPHP=substr($HtmlToPHP,0,-5); switch ($HtmlToPHP) { case 'index': $HtmlToPHP='fooldal.php';break; case 'forum': $HtmlToPHP='forum.php';break; case 'valami': $HtmlToPHP='1/valami.php';break; default:$HtmlToPHP='404.php'; } include($HtmlToPHP); ?>
    Mutasd a teljes hozzászólást!
  • Bocs.. nem szőrszálhasogatni szeretnék, csak legyen korrigálva. :)

    ... akkor a webroot-ban található index.* fájlt ...

    Az apache configban a DirectoryIndex után vesszővel elválasztva kell megadogatni, hogy milyen sorrendben keressen index file-t.
    index.*-ot szerintem sosem keres, tehát ha a következő sor van a conf-ban
    DirectoryIndex index.html index.php
    akkor pl index.htm sose lesz automatikus választás eredménye. Elsőként megnézi, hogy van-e index.html, HA NINCS, akkor nézi keresi az index.php-t. Ha az sincs, akkor attól függően, hogy az Indexes meg van-e adva az Options direktíva után, vagy listázza a könyvtárat, vagy 403 Forbidden fejléccel elhajít.

    másik... :)
    AddType application/x-httpd-php .html
    Ezt beraktam egy .htaccess fájlba

    Mert nem a .htaccess-be kell betenni, hanem azapache.httpd.conf-ba."

    mod_mime - Apache HTTP Server Version 2.2
    ezen a linken ha megnézed az AddType direktíva Context meghatározását, ezt láthatod:
    Context: server config, virtual host, directory, .htaccess
    Tehát a fentiek közül akárhol definiálhatod, azonban a .htaccess-hez kiegészítés, hogy a virtual host configban lennie kell egy AllowOverride FileInfo szövegnek.

    Tényleg nem kötözködni, csak pontosítani szerettem volna. Remélem nincs harag.
    Mutasd a teljes hozzászólást!
  • ...index.*-ot szerintem sosem...

    A csillag ( * ) karakter, mint azt te is nyilván tudod, egy helyettesítő un. joker karakter. Itt nyílván félreértettél valamit, nem a csillag kiterjesztésű fájlra keres a szerver hanem azokra a karakter sorozatokra amik a conf-ban megvannak adva! Tényleg nem szőrszálhasogatás de nem gondoltam, hogy az összes lehetőséget fel kellene sorolnom (bár nincs sok).

    A hozzászólásod második része csak kiegészítése az általam idézett leírásnak. Nem több és nem kevésebb "lentről fel, vagy a fentről le" elméletének. Az én olvasatomban a linken található információ csak annyi, ha az apache.httpd.conf a konfigurációs fájlok között a .htaccess fájl akkor akár ott is definiálhatod.
    De mi van akkor ha a szerver beállítások figyelmen kívül hagyják a .htaccess fájlt?
    Mutasd a teljes hozzászólást!
  • :)
    akkor bizony gáz van :D nyertél egy csokit :)
    megadom magam :)
    Mutasd a teljes hozzászólást!
  • Még az előző hsz.-hez:

    Sőt ha egy kicsit beleásod magad az "apacs" konfigurálásába akkor találkozni fogsz az "AccessFileName" direktívával ami alapértelmezésként a .htaccess-t adja meg, de ha itt a "AccessFileName barackos.pite"-ét szerepelheted akkor a .htaccess fel sem lesz dolgozva, a szerver figyelmen kívül hagyja. Ellenben ha van egy barackos.pite fájlod és az a megfelelő szintaxis szerint tartalmazza a .htaccess fájl tartalmát akkor nyertél.

    PM-ban küld a csokit :Đ
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd