. Htaccess Miért nem működik?
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.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Ü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
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
.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 */
}
?>
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
$_ENV[xURL] <<< helyesen $_ENV['xURL']
Bocsi, kimaradtak a hüle jelek :-)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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!
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
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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!
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>
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!