. 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.
Ü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
.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 */
}
?>
$_ENV[xURL] <<< helyesen $_ENV['xURL']
Bocsi, kimaradtak a hüle jelek :-)
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
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 © 2024, 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!