webszerkesztés és photoshop fórum - WebPillangó

WebPillangó => Programozás => A témát indította: anatre - 2008. 10. 30. - 16:17:29



Cím: .htaccess mod_rewrite
Írta: anatre - 2008. 10. 30. - 16:17:29
Lenne nekem egy olyan kérdésem, hogy ezeket a csúnya linkeket pl.: http://www.virtualistuning.hu/index.php?page=forum&topik=31
és hasonlók, valahogy nem lehetne szebb formára hozni?


Cím: .htaccess mod_rewrite
Írta: Tupacko - 2008. 10. 30. - 21:29:58
Válasz a http://forum.webpillango.org/index.php/topic,16.msg1334.html#msg1334 üzenetre:
De igen :) Használva a .htaccess mod_rewrite modulját.
Létrehozol egy .htaccess filet abban a könyvtárban, ahol figyelni fogod a linkeket, pl. az oldalad főmappájában. Megnézed, ha létezik a mod_rewrite modul, majd megírod az átirányítást. Elég sok dolgot kell tudni hozza, pl. regular expressionöket, szóval inkább adok egy linket, ahol szépen le van írva, mi hogyan működik:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
Példa (nem csak címsor újraírás): http://www.askapache.com/htaccess/ultimate-htaccess-file-sample.html


Cím: Re: .htaccess mod_rewrite
Írta: anatre - 2008. 10. 31. - 10:00:46
huhh, asszem erre még gyúrnom kell, nem néz ki valami egyszerű dolognak  ;)


Cím: Egyszeru .htaccess mod_rewrite pelda
Írta: Tupacko - 2008. 10. 31. - 15:30:26
Egy pelda:
Idézet
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^tuningauto/([-a-zA-Z0-9]+)/([0-9]+).([a-z]+)$ index.php?cselekves=$3&nev=$1&id=$2
</IfModule>

Mirol is van szo valojaban. Teszteled, hogy ha letezik a mod_rewrite.c, hogy ne okozz belso szerver hibat, amennyiben nem letezik a kiegeszito. Ha letezik, akkor bekapcsolod a FollowSymLinks lehetoseget, ez szukseges a RewriteEnginehez. Altalaban alapbol be van kapcsolva, de ha megsem lenne, mi bekapcsoljuk, igy nem fog cirkuszolni a RewriteEngine.
Ezt kovetoen jonnek sorra az ujrairasok. Lehet kondiciokat is tenni, de most nem akartam komplikalni. Ha komplikalni akarod, az elobbi hozzaszolasomban adott linken megtalalod a kello dolgokat :)
Az elso ujrairas azt eri el, hogy minden hxxp://domain.com/tuningauto/kis-NAGY-0123456789/3532525235.mutat link legyen atiranyitva a hatterben a kovetkezo cimre: hxxp://domain.com/index.php?cselekves=mutat&nev=kis-NAGY-0123456789&id=3532525235
Mit ersz el igy? Pl. eleg a link vegen modositsd a kiterjesztest es maris mas-mas muveletet vegezhetsz. A nev csak SEO szempontbol van kiirva, nem is kell atadd az index.phpnak, ha nem akarod. Az id alapjan betudod azonositani az autot.
Hasonlo elven konnyeden megirhatod a neked szukseges dolgokat!

Sok sikert!


Cím: Re: .htaccess mod_rewrite
Írta: torokzsolt - 2009. 01. 31. - 13:31:58
Üdv!

Remélem jó helyre írok.. úgygondolom részben még ide tartozik a téma. Tegnap feltettem egy kérdést: http://webpillango.org/programozas/php/parsegetintostring-php-fuggveny/ (http://webpillango.org/programozas/php/parsegetintostring-php-fuggveny/) (Török Zsolt) Először is szeretném megköszönni a választ. Azthiszem megértettem a megoldást.
Viszont lenne még két apró kérdésem:
1. ha így linkelek: <a href="#2" onclick="ide az ajax azzal nincs gond">2. oldal</a> akkor az is megfelel igaz?
2. ugye ennek a mod_rewrite-nek az is a lényege többek közt hogy a keresők jobban fel tudják térképezni az oldalt.. ha ilyet "#2" használok az ugye nem hátráltatja semmiben?!

Köszi szépen! további szép napot!


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2009. 01. 31. - 20:06:26
Igen, ha #2 azt nem tarolja semmiben. Dontened kell. Vagy AJAX es nehezkesen taroljak a keresorobotok, vagy mod_rewrite lapozas szep URLkel. Koztes megoldas, hogy mod_rewrite-al linkelsz az oldalakra kulso oldalrol, de ha mar az oldalon van az illeto, akkor AJAXszal tudjon lapozni.

Udv a forumon!


Cím: Re: .htaccess mod_rewrite
Írta: torokzsolt - 2009. 02. 02. - 19:29:54
Köszi szépen.. Nagyon örülök, hogy rátaláltam az oldalra és egyben a fórumra. Sokat segítettél.. remélem a későbbiekben énis tudok majd valakinek


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2009. 02. 03. - 12:38:49
Orulok, hogy tetszik az oldal! Tovabbi kellemes forumozast, olvasgatast :)


Cím: Re: .htaccess mod_rewrite
Írta: lowert - 2009. 02. 26. - 21:27:42
Hello! Még mindig az előző probléma (a PHP részben lévő), csak most szerintem egy kicsit .htaccess irányba nyúlik el.
Az alábbi lenne a kérdésem:

Hogyan tudnám megoldani, hogy a mappa/fájl.pdf  fájlt csak bejelentkezett felhasználók tudják elérni?

Ha be van jelentkezve, akkor mehet a letöltés, ha nincs akkor :
Kód:
403

Forbidden

You don't have permission to access /mappa/fájl.pdf on this server.


Megoldottam, hogy a .htaccess fájl mindenkitől blokkolja a tartalmat


Kód:
Deny from all


de ez meg ugye nem túl jó, most próbálom valahogy kitrükközni, hogy kiolvassa a PHP a mappából, onnan pedig le tudja közölni a linket a bejelentkezett felhasználóknak...


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2009. 02. 28. - 11:02:55
.htaccess nem igazan tudja, hogy ki van es ki nincs bejelentkezve. PHPbol is szepen meg lehet oldani. Lesz egy mappad, amitol a kulvilag el van tiltva es lesz egy PHP allomanyod, ami kap egy azonositot, mint parameter (ez a parameter szerint tudod azonositani, hogy melyik allomanyt akarod letolteni. Lehetoleg ne az allomany neve legyen, hogy ne lehessen kikovetkeztetni, mikent kelljen valtoztatni a parameter egyeb allomanyok megszerzese erdekeben). Jol jon egy SQL tabla, amiben van ket oszlop: az elso tartalmazza a file MD5 hash-et, a masodik oszlop a file elereset. A parametert hasznalva, kilehet nyerni a tablazatbol a filet, amit le szeretne tolteni a felhasznalo. Ezt kovetoen, PHPval visszaadod a filet (nezz utanna az fpassthru fuggvenynek).
Visszaterve a letiltas reszere, a letoltes.php elso sorai igy neznenek ki:
Kód:
<?php
  
if ( !beVanLepve() ){
    
header('HTTP/1.1 403 Forbidden');
    die();
  }
?>


Ez kikuldi a megfelelo header informaciot es megallitja a PHP futast, ha az illeto, aki hasznalni akarja a linket, nincs belepve.

Jo kodolast!


Cím: Re: .htaccess mod_rewrite
Írta: lowert - 2009. 03. 01. - 09:07:09
Köszi a segítséget!
Én is hasonlóan csináltam a header információs részt (csak a bejelentkezésre küld át), de attól még, ha beírom a fájl teljes elérési útvonalát, ugyanúgy le fogja tölteni, tehát .htaccessel lehetne kóddal elzárni, a PHP beleírja a regisztrált felhasználók kódját és felhasználónevét a .htaccess-be és valahogy miután bejelentkezik, ki szeretném menteni cache-be, és onnan továbbadni a .htaccess-nek, de lehet, hogy ennyit nem ér az egész :)


Cím: Re: PHP weboldalmotor
Írta: anatre - 2009. 06. 20. - 14:45:20
Namost. Van ugye az az oldalmotorom ami itt van a fórumban, és egy htacces-em.

Kód:
<?php //oldalmotor
$modules["registration"] = "reg.php";
 
$act "news.php"//az alap betoltes, ha nincs megadva a module valtozo
 
if ( !isset($_GET["page"]) ){
  $get_mod "";
}
else $get_mod strip_tags(htmlentities($_GET["page"]));
 
foreach($modules as $mod => $act_m){
  if( strcmp($mod,$get_mod) == ){
$act $act_m;
break;
  }
}
 
if ( file_exists($act) ){
  include $act;
}
else{
  include "error.php";
}
?>

Kód:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]
</IfModule>

Miért nem működik? :(
WAMP-ot használok, rewrite_module bekapcsolva.



Cím: Re: PHP weboldalmotor
Írta: Tupacko - 2009. 06. 20. - 17:38:20
Esetleg próbáld meg úgy, hogy megadod, hogy RewriteBase /. Lehet azért nem működik, mert te kikötöd, hogy úgy kell kezdődjön, hogy /. Próbáld meg úgy is, hogy vedd el a ^ karaktert, a RewriteRule elől. Ha semmi, akkor írasd ki az index.phpban valahol elől, hogy mi van a GET tömbben. Ha semmi, akkor picit még próbáld meg máskét a Rewrite-ot. Elszőször indulj ki egy egyszerű újraírásból, pl. page/ez-pelda pelda.html Ha átirányítódik, akkor próbáld meg az index.php paraméterezni, majd ha minden működik, építsd össze a meglévő weboldal motorral :)

Ha sehogy sem sikerül, írd le, mit próbáltál, s megpróbálok segíteni ismét. Sok sikert!


Cím: Re: PHP weboldalmotor
Írta: anatre - 2009. 06. 20. - 18:12:43
Az a baj hogy ehhez a rewrite dologhoz annyira nem értek. De szerintem egyenlőre az a gond, hogy ugye nem azt irja hogy:
The requested URL /virtualperformance/reg.php was not found on this server.
hanem csak:
The requested URL /virtualperformance/reg was not found on this server.

vagyis a kiterjesztést nem is érzi. Lehet hogy nagyon nagy hülyeséget beszélek.
Amúgy próbáltam a ^ nélkül is. A GET tömböt pedig kiirja.
Na most ugye nekem úgy néz ki a dolog, hogy van a gyökérkönyvtáram, abban az index.php és a .htacces, és egy page/ mappában pedig a 'modulok'.


Cím: Re: PHP weboldalmotor
Írta: Tupacko - 2009. 06. 24. - 20:52:00
Azt hiszem a legnagyobb segitseg (es a legpontosabb) az, ha adok ket linket. Olvasd el, nezd meg a peldakat es sikerul megoldanod a gondot.
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

A kiterjeszteses dolog erdekes, de az attol is nagyban fugg, hogyan hivod meg. Az Apache dokumentacio viszont egeszen biztosan megoldast nyujt :)

Sok sikert!


Cím: Re: .htaccess mod_rewrite
Írta: anatre - 2009. 06. 25. - 11:39:26
Rendben, köszönöm szépen ;)


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2009. 06. 26. - 15:01:00
Szivesen!


Cím: .htaccess mod_rewrite
Írta: liptakrobi - 2010. 06. 04. - 16:07:02
Hello

Azt akarom kérdezni hogy WP nél is meg lehet változtani a .htaccesst?
Pl a következő url-eket lecserélni.
hxxp://seat-info.info/kepgaleria/exeo-st?show=gallery&nggpage=2
hxxp://seat-info.info/kepgaleria/exeo-st/kepek/page/2

vagy
hxxtp://seat-info.info/kepgaleria/exeo-st?show=slide
hxxp://seat-info.info/kepgaleria/exeo-st/diavetites


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2010. 06. 06. - 08:27:41
A WP-nel is meglehet valtoztatni, termeszetesen, mert a htaccess a szervernek ad parancsokat. A gond viszont az, hogy a WP szereti maga feldolgozni az URL-ket, eppen ezert a WP htaccess allomanya nem tesz mast, mint a teljes reszt, ami a domain nev utan van atadja parameternek az index.php-nak. Ez arra jo, hogy nem kell a hozza nem erto emberek a szerveren kinlodjanak, hanem a WPben nehany kattintassal megtudjak valtoztatni, hogy mikent akarjak elerni a kulonfele oldalakat.
Allitolag a NextGen Smooth Gallery-nek mar van beepitet keresomotor barat hivatkozas lehetosege. Esetleg probald ki: http://uninuni.com/wordpress-plugin-nextgen-smooth-gallery/


Cím: Re: .htaccess mod_rewrite
Írta: liptakrobi - 2010. 06. 07. - 00:55:32
Köszi, belenézek a php részébe, találtam már 2 rewrite fájlt is szerintem ott kell megadni milyen url-t mire alakítson. És a .htaccess marad úgy ahogy van. Remélhetőleg.


Cím: .htaccess mod_rewrite vs Wordpress permalink structure
Írta: Tupacko - 2010. 06. 07. - 07:18:40
Elvileg nem kell atirni egy allomanyt sem, hanem a plugin kezelofeluleten lehet beallitani. A wordpress permalinkjeit (hogy kezelje a bejegyzeseket) a kovetkezo linken ertheted jobban meg: http://codex.wordpress.org/Using_Permalinks


Cím: Re: .htaccess mod_rewrite
Írta: spier - 2010. 07. 29. - 17:18:28
Tud valaki valami olyan doksit ahonnan megtanulható ténylegesen a mod_rewrite, példákon és egyéb dolgokon keresztül?
A google által hozott tutorialok nagyon sarkítottak, ténylegesen nincs - vagy nem hozott nekem - átfogó leírást.

Ez így jó lehet, ha mindent .html végűre akarok átíratni?: (működni működik)
Kód:
RewriteEngine on
RewriteBase /

# Redirectek
RewriteRule ^index\.html$ index.php [L]
RewriteRule ^kapcsolat\.html$ kapcsolat.php [L]
RewriteRule ^404\.html$ 404.php [L]

# 404 [page not found] lekezelese
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . 404.html [L,QSA]

Igazából még csak arra sem találtam értelmes leírást, hogy mi az az [L] a végén vagy [R, L] stb.
Régebbi hozzászólásokban volt pár link hivatalos oldalra is de aki onnan megérti és megtanulja az biztos nem humanoid.


Cím: Re: .htaccess mod_rewrite
Írta: spier - 2010. 07. 30. - 02:05:08
Több órás próbálgatás után sikerült a következő formáció:

Kód:
RewriteEngine on
RewriteBase /

# Redirectek
RewriteRule ^partnereink(/?)$ partnereink.php [L]
RewriteRule ^letoltesek(/?)$ letoltesek.php [L]
RewriteRule ^kapcsolat(/?)$ kapcsolat.php [L]
RewriteRule ^hirek(/?)$ hirek.php [L]

# 404 [page not found] lekezelese
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . 404.php [L,QSA]

Ez gyönyörűen kiadja a következőt:
www.valami.hu/partnereink.php -> www.valami.hu/partnereink/ illetve így is működik www.valami.hu/partnereink
www.valami.hu/hirek.php -> www.valami.hu/hirek/ illetve így is működik www.valami.hu/hirek
stb.

Viszont a híreknél elakadtam. A hír címéből szeretnék egy .html fájt csinálni ami a link lesz.
Addig eljutottam, hogy átalakítom a linket php-val
Ezt: Lorem ipsum dolor sit amet. Erre: /hirek/lorem-ipsum-dolor-sit-amet.html
ez így szuper is viszont a rewrite-al már nem tudom működésre bírni, hogy meg is jelenjen a hír.

Ha csak az id alapján megyek akkor hibátlan a dolog:
Kód:
RewriteRule ^hirek(/?)$ hirek.php [L]
RewriteRule ^hirek/(.+) hirek.php?id=$1

Ötlet? Ilyennel próbálkoztam de nem hajlandó menni:
Kód:
RewriteRule ^(.+)/(.*).html$ $1.html&%{QUERY_STRING} [R,L]


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2010. 08. 01. - 21:23:01
Hivatalos dokumentacional jobb nincs is: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html


Cím: Re: .htaccess mod_rewrite
Írta: spier - 2010. 08. 05. - 18:12:47
Üdvölet.
Ez így jó lehet?

Kód:
RewriteEngine on
RewriteBase /

# Redirectek
RewriteRule ^letoltesek(/?)$ downloads.php [L]
RewriteRule ^kapcsolat(/?)$ contact.php [L]

RewriteRule ^hirek(/?)$ news.php [L]
RewriteRule ^hirek/(.*)-([0-9]+).html$ news.php?%{QUERY_STRING}&id=$2 [QSA]

RewriteRule ^termekek(/?)$ products.php [L]
RewriteRule ^termekek/(.*)-([0-9]+).html$ products.php?%{QUERY_STRING}&id=$2 [QSA]

# 404 [page not found] lekezelese
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . 404.php [L,QSA]

A híreknél a news.php dolgozik van egy {QUERY_STRING} amit a címből állítok elő pl.: lorem-ipsum-dolor-sit-amet, és egy id ami az aktuális id ha véletlen egyezne a string és az alapján is megy az ellenőrzése, hogy melyik hírt kérte valaki.

Tehát,
cím: Lorem ipsum dolor sit amet.
id: 1
akkor az url: /hirek/lorem-ipsum-dolor-sit-amet-1.html

A kibontott hírnél azt ellenőrzi, hogy milyen id-t kap, a stringnek nincs lényegi jelentősége csak seo.

Nos? Innen jónak tűnik, vagy legalábbis működik.
Előre is köszi az építő jellegű kritikát.

Üdv.


Cím: Re: .htaccess mod_rewrite
Írta: Tupacko - 2010. 08. 11. - 21:33:12
Elvileg jo, ki kell probalni.