Kezdőoldal » Számítástechnika » Weblapkészítés » . Htaccess Miért nem működik?

. Htaccess Miért nem működik?

Figyelt kérdés

Már a 20. fajta kódot írom be a .htaccess fileomba... A lényeg az ,hogy [link] ból valami ilyesmi váljon : [link]


ezzel a kóddal próbálkoztam : <IfModule mod_rewrite.c>

Options +FollowSymlinks

RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^([^/]*)\.php$ /kozosseg/index.php?lap=$1 [L]

</IfModule>


Semmi változás nem történt az oldalamon, viszont amikor beírtam valami hülyeséget a .htaccess fileomba akkor 500as hibakóddal nem működött az oldalam.



2014. jún. 7. 20:46
 1/9 A kérdező kommentje:
Szeretném ,hogy az url-em szépen tagolt legyen / jelekkel.
2014. jún. 7. 20:50
 2/9 anonim ***** válasza:

Ühüm. Ahhoz először szedj le egy alap kódot google semgítségével, ha kezdő vagy, vagy tanuld meg, de akkor rendesen, ne csak azért, mert egyetlen funkcióját használnád.

w3schools.com

2014. jún. 7. 20:57
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
köszi bár egy kicsit pontosabb válaszra számítottam... esetleg ha valaki tud mélyrehatóbban segíteni azt megköszönném :)
2014. jún. 7. 21:14
 4/9 anonim ***** válasza:

.htaccess:

<IfModule mod_rewrite.c>

rewritebase /

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)\.html$ index.php [QSA]

</IfModule>


index.php:

<?php

$_ENV['URL'] = (($_SERVER['REDIRECT_URL'])?($_SERVER['REDIRECT_URL']):($_SERVER['REQUEST_URI']))

print($_ENV['URL']);

?>


pl.

URL: http://localhost/Valami => PHP: /Valami

URL: http://localhost/profil/XY => PHP: /profil/XY


<?php

$_ENV[xURL] = explode('/',$_ENV['URL']);

print_r($_ENV[xURL]);

?>


pl.

URL: http://localhost/Valami => PHP: Array([0]=>'',[1]=>'Valami')

URL: http://localhost/profil/XY => PHP: Array([0]=>'',[1]=>'profil',[2]=>'XY')


<?php

if($_ENV[xURL][1]=='profil' AND $_ENV[xURL][2]) {

/* SQL SELECT $_ENV[xURL][2] azonosítóval */

}

?>

2014. jún. 7. 21:42
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

$_ENV[xURL] <<< helyesen $_ENV['xURL']

Bocsi, kimaradtak a hüle jelek :-)

2014. jún. 7. 21:43
Hasznos számodra ez a válasz?
 6/9 Drone007 ***** válasza:

Kicsit túlbonyolítottad a RewriteRule-t elég ennyi is:

RewriteRule ^(.*)$ index.php?lap=$1 [L]


Így minden url hívás az index.php-ban fog landolni, a sub-url-ek pedig a $_GET['lap'] global-ban lesznek, a meghívott fájl pedig minden esetben az index.php lesz.


Pl.: http://localhost/talk esetén a $_GET['lap'] = "talk" lesz.

http://localhost/talk/elso_bejegyzes/12 esetén a $_GET['lap'] = "talk/elso_bejegyzes/12" lesz.


A $_GET['lap'] global-t az index php elején még az inicializációnál értékeld ki (még a header előtt lehetőleg), és aszerint jelenítsd meg a tartalmakat. A használt url-ek pedig minden esetben kövessék a RewriteRule érvényességi körét, magyarul ne így:

<a href="http://localhost/index.php?lap=valami">link</a> hanem így:

<a href="http://localhost/valami">link</a>


Sok sikert!

2014. jún. 8. 13:42
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

sajnos ezt eredményezi :

include(index.php.php): failed to open stream: No such file or directory in C:\xampp\htdocs\kozosseg\index.php on line 36

2014. jún. 9. 14:32
 8/9 Drone007 ***** válasza:

Az eredmény azért lett hibás mert (privátban küldted) így adtad meg a linket:

<a href="?lap=album">Albumok</a>

A .htaccess értelmezésében nem adtál át semmit, a felesleges dolgokat szépen eldobta.

A php beágyazásnál pedig ezt a kódot adtad neki:

include($_GET['lap'].'.php');

A semmi sajnos semmit szül, vagyis csak az index.php-t, ezért a hiba.


A linket így add meg:

<a href="/album">Albumok</a>

A rendszer automatikusan beteszi elé az aktuális domaint (http://localhost vagy http://valaki.atw.hu) Tehát nem kell az index.php-t kiírni!


Ilyenkor $_GET['lap'] értéke 'album' lesz.

Célszerű a $_GET['lap'] globált felbontani, mert lehetséges több oldalt/aloldalt is meghívni ezzel a módszerrel, vagyis

<a href="/album/sajat">Albumok</a>

hívás esetén a $_GET['lap'] értéke 'album/sajat' lesz.

Ezt bontsd fel explode-dal:

$subs = explode('/',$_GET['lap']);

és vizsgáld csak az első (0.) elemét a tömbnek:

$oldal = $subs[0].".php";

Ha van több eleme is, azt már a beágyazott php fájlban tovább vizsgálhatod, és így kiderülhet, hogy egy további almappát kell megnyitni az albumokban (if (isset($subs[1])...)


Kérlek ne kérj segítséget privátban olyasmire, amit az oldalon kérdeztél, mert a megoldás esetleg mást is érdekelhet.


Sok sikert!

2014. jún. 9. 18:22
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:

Nagyon jó! Már működik, a helyes kód így néz ki :

<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d


RewriteRule ^(.*)$ index.php?lap=$1 [L]

</IfModule>


és a hivatkozások rájuk :

<a href="/kozosseg/profileimg">Profil kép</a>

2014. jún. 10. 08:35

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!