Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan tudok többváltozós ....

Hogyan tudok többváltozós . Htaccess fájl-t készíteni?

Figyelt kérdés

Sziasztok!


Többváltozós URL -n keresztül $_GET segítségével szeretnék értékeket átadni a php nak.

De ezt úgy szeretném, hogy...


A tartalmi oldalakat:

Pl.: [link]

Míg a képgalériánál 2 változót olvastatok ki az url ből.:

Pl.: [link]


A jelenlegi .htaccess konfigom.:


<ifmodule mod_rewrite.c>

RewriteEngine on

RewriteBase /

#

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|robots\.txt)

RewriteRule ^(.*) index.php?oldal=$1 [QSA]

#RewriteRule ^(.*)/^(.*) index.php?oldal=$1&galeria=$2 [NC]

#RewriteRule ^(.*)/^(.*) index.php?oldal=galeria&album=$2

[NC]

</IfModule>



A kérdést zárva még egy kérdés, hogy mit jelent a sorok végén [NC] vagy [QSA] stb...



Köszönöm szépen a segítséget előre is!



#többváltozós .htaccess #.htaccess konfiguráció #URL get .htaccess
2014. máj. 15. 13:04
1 2
 1/13 anonim ***** válasza:
Elég lenne egy változóban pl. kepgaleria/fenykepek, és php-val explode-olod /-jelnél, és máris megvan mind2.
2014. máj. 15. 14:05
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:

1,akkor két külön szekció kell,azaz két RewriteCond, Rewriterule rész. Az egyik a galériához a másik meg a többihez.



2,

[link]

NC - kisbetű nagybetű nem számít a paraméternél

QSA - eredeti paramétereket hozzáadja az új url-hez (megmaradnak)

2014. máj. 15. 14:13
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:
Amit első írt az viszont valószínű egyszerűbb
2014. máj. 15. 14:14
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:

Az explode -vel egy a gond...Szépen végzi a dolgát ezzel nincs is gond, de amikor a második változót írom be az url be akkor fogja a design magát és mindenféle CSS -t eltávolít, így csak a puszta szöveg kerül kiírása.


[link]

De ha már

[link] /galeria

akkor már eltűnik mindenféle grafikai alkalmazás


Egy kicsi módosítottam a .htaccess -t és végtelen elemre kértem az URL olvasását.


RewriteRule ^index\.php$ - [L]


RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]


PHP oldalon pedig.:

$URIszelet = explode("/", $_SERVER['REQUEST_URI']);


És kérdésekkel teli állok az esett előtt, hogy az első értéket szépen értelmezi, de utáni a többinél már nem dolgozik úgy ahogy kell.


Ilyen pl a többlépcsős RewriteRule használta is, ugyan úgy viselkedik ez esetben is.:

RewriteRule ^index\.php$ - [L]

RewriteRule ^(.+)/(.+)/(.+)/?$ index.php?par1=$1&par2=$2&par3=$3 [L]

RewriteRule ^(.+)/(.+)/?$ index.php?par1=$1&par2=$2 [L]

RewriteRule ^(.+)/?$ index.php?par1=$1 [L]


Nem lehet, hogy valami más is kiírása kerül a .htaccess ben ami ez megzavarja?

2014. máj. 15. 18:27
 5/13 A kérdező kommentje:

A php ben használok egy szűrőt str_replace mely a minta alapján megkeresi a css fájlokat és a képfájlokat, ennek az útvonalát módosítva tér vissza, de ezt a .htaccess esetén nem szereti, így elérhetetlenné teszi a php által generált elérési útvonalat. Ezért nem találtja meg.


De amikor az URL ben egy változó érték van akkor ez a hiba nem áll fent, egy vagy több változó esetén jelentkezik ez a "nem találom meg a php által generált útvonalat".

2014. máj. 15. 19:13
 6/13 Drone007 ***** válasza:

Egyszerű megoldás:


.htaccess

--

RewriteEngine on

# minden file es directory hivas eseten:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

# minden hivast iranyits at az index.php-n, az egyebeket tedd requestbe:

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

--


Az L flag azt jelzi, hogy ez az utolsó feldolgozandó szabály.

A fenti kód azt eredményezi, hogy minden hívás az index.php-ra fog érkezni valahogy így:

hívás: [link]

eredmény: [link]


hívás: [link]

eredmény: [link]


Vagyis az index.php kapni fog egy $_GET["x"] változót, amit már csak helyesen kell feldolgoznod.

Pl: $urls = explode("/",$_GET["x"]);

Az $urls tömb tárolja, hogy milyen hívás érkezett. Az első ($urls[0]) paraméter nyilván a hívott oldal, a többi az esetleges aloldal/oldalszám/album/cím ez már rajtad áll.

2014. máj. 15. 19:35
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:

@Drone007


Az általad leírt módszer jó, én is e módszert alkalmaztam első körben, de ami a fő probléma, hogy miért akarja minden esetben a virtuálisan módosított eléréseket is az index.php ra irányítja?


Template rendszerrel dolgozok, ez saját fejlesztés.

Megvan a kész html oldalam, ez benne van a tempate mappában, ott helyezkedik el mellette a mappán belül az images mappa a css js stb....

Tehát ha a templates mappát belül megnyitom a kész html oldalt akkor rendesen látom a grafikai elemeket, de, hogy az oldal dinamikus tartalommal töltsem fel, az html ben jelzőket helyezek el, melyet majd a php megnyit kiolvas, és helyette tartalmat helyez oda.


Az index.php feladata megnyissa nekem a html -t egy stringet készít belőle, átolvassa, hogy mit talál benne.:

stylus.css, java.js, images/kep.jpg, {TARTALOM}

Mind különféle dolgokat, melyeket átír szépen tehát az elérést módosítja, hogy templates/stylus.css, templates/java.js, templates/images/kep.jpg......

De ezen kívül a CSS fájlra is külön van ami megnyitja és a tartalmát átírja, a /images mintát keresi meg, így módosítja azoknak is az útvonalát.


Ha ez mind megvolt, lezárja és kiírja a komplett oldalt.


De itt a bibi, hogy amikor az első URL értéket megkapja az oldal akkor még nincs gond, de amikor a második érték megérkezik neki, (az általad írt utolsó módszerrel is) minden amit a php átírt, fogja a .htaccess és az inden.php irányítja. De nem értem, hogy miért nem tetszik neki?

2014. máj. 15. 19:58
 8/13 A kérdező kommentje:

Tehát ahogy látom az URL ben szereplő tagokat fogja és elé írja, de ez a html kódban nem látszik, ez akkor látszik amikor meghívja a fájlokat.


[link]


Így a css -t is a php magamrol/teszt/templates mappában kezdi el keresni, ami nem létezik.

2014. máj. 15. 20:24
 9/13 anonim ***** válasza:

Tegyél egy /-jelet a css hivatkozás elé, pl:

<link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />

2014. máj. 15. 20:42
Hasznos számodra ez a válasz?
 10/13 A kérdező kommentje:

Így sem jó. :(

Ugyan úgy nem tölt be.

2014. máj. 15. 20:50
1 2

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!