ugrás a tartalomhoz

ReWriteRule kivétellel

TIV · 2007. Júl. 28. (Szo), 01.40
üdv...

nagyon kezdő vók mod_rewrite terén. adott: xp, apache 2.2.3, mod_rewrite

van egy ilyenem:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

Ez jól is megy így, bár a 2.-3. sor nem tudom mire jó, tudja vki?:) Szeretnék viszont egy olyat, hogy ha domain/mas , akkor az egyeb.php nyíljon meg. így tehát...

RewriteRule ^mas$ /egyeb.php

A gond viszont az, hogy a kettő együtt nem működik...:( Ha mindkettő egymás alatt van, akkor írtó lassan kezd letöltődni az oldal és ráadásul nem is jönnek le képek, stb..

tudja vki miért és hogy lehetne megoldani?
köszönöm
 
1

Jajjaj

janoszen · 2007. Júl. 28. (Szo), 09.48
Hajjaj, kezi csókolom, nem tetszett elolvasni a doksit, pedig el kellett volna. Gyors áttekintés a mod_rewriteról:

- Először leellenőrzi, hogy a RewriteCond első paramétere (ez esetben a REQUEST_FILENAME, azaz a kért fájl) megfelel-e a második paraméterben megadott kritériumnak (azaz !-f - fájl nem létezik. Felkiáltójel a nem.)
- A RewriteRule pedig az első paraméterben megadott mintára illeszkedő címeket átírja a második paraméterben megadott helyre.

Azaz ez a kód tökéletesen alkalmatlan arra, amit Te szeretnél. Neked valami ilyesmi kell. Persze a tökéletes megoldást nem mondom meg, azt találd ki magad:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^valami\.domainem\.hu$
RewriteRule (.*) valami.php


Egyébként pont aktív egy másik ilyen téma is, abban is van egy pár hasznos tipp. Olvass mielőtt postolsz.
3

nem értem

TIV · 2007. Júl. 28. (Szo), 13.53
nálam nem HOSTot kell vizsgálni, hanem hogy ha a domain után /mas van, akkor egyeb.php t nyissa, ha nem, akkor index.php -t.

így próbálkoztam:
RewriteCond %{REQUEST_URI} ^/mas$
RewriteRule ^/mas$ egyeb.php

RewriteCond %{REQUEST_URI} !^/mas$
RewriteRule ^(.*) index.php
miért nem megy?
4

Mert a RewriteRule-nál már nem kell

janoszen · 2007. Júl. 28. (Szo), 15.49
Az első RewriteRule-nál írd át (.*)-ra a szűrőt, úgy remélhetőleg menni fog. A sor mögé tedd azt, hogy [L] és akkor nem is fog több szabályba beleszaladni, nem kell mindenhol kezelned.
5

nem jönnek le a képek :(

TIV · 2007. Júl. 29. (V), 11.40
köszi, de sajna még mindig nem jó. nem jönnek le a képek és az akciós termékek sem tölti be a kért oldalt. az a baj, h nincs sok időm rá, viszont tetszik ez a modul szóval ha lesz egy kis free time-om kitanulmányozom..
RewriteCond %{REQUEST_URI} ^/mas$
RewriteRule (.*) egyeb.php [L]

RewriteCond %{REQUEST_URI} !^/mas$
RewriteRule ^(.*) index.php
namost, a második rewritecond-ot ha kiveszem se megy. ha ^(.*) -ot írok első rule-nál, akkor sem...:( mi lehet a baja?:S


ui:
és ezek se mennek de miééééééééééééééééért?
RewriteCond %{request_uri}= /mas
RewriteCond %{request_uri}= /mas/
6

megoldás

TIV · 2007. Júl. 29. (V), 15.21
nah, megvan a megoldás...
RewriteEngine on

RewriteCond %{REQUEST_URI} /mas
RewriteRule ^(.*) egyeb.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php
nem kötöttem ki, hogy !/mas ,de mégis működik szépen. végülis a két feltétel kizárja a /mas -t is, ha jól gondolom. azért köszönet a válaszokért! ui: az uccsó két feltételt kellett bele, mert csak így volt hajlandó működni egy modul oschez.
2

mi is a 2. sor...

a.d.a.m · 2007. Júl. 28. (Szo), 09.52
Mit szeretnél elérni? Azt, hogy edott domain esetén átiránytsa egy adott oldalra?
Az átírásoknak itt is utánanézhetsz: http://rrd.1108.cc/url-atirasok-apache-mod-rewrite/

a.d.a.m
7

új probléma

TIV · 2007. Aug. 26. (V), 00.21
új problémám volna, én egyszerűen nem értem ezt a rewrite modult...

arra lenne szükségem, hogy egy ilyen urlt hívásakor ( vmi.hu/elso/masodik/harmadik ), ezt töltse be..: vmi.hu/index.php?egy=elso&ketto=masodik

betölteni betölti, de képek style.css nem töltődik be ...:S
így próbálkoztam...:


RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*) index.php
RewriteRule ^(.*)/(.*)/(.*)$ index.php?egy=$1&harmadik=$3


hogy lehetne ezt működésre bírni?
köszönöm
8

up

TIV · 2007. Aug. 27. (H), 10.04
up lécci
9

esetleg egy HTML alapú megoldás?

a.d.a.m · 2008. Júl. 31. (Cs), 18.21
Próbáld meg a HTML base tag-jét, nekem segített az átirányításoknál.
<BASE HREF="vmi.hu">
Ezután a css meghívásánál csak relatív útvonalat adj meg. Bővebb leírást erről az elemről itt és itt találsz (vagy gugli).

a.d.a.m
10

Megoldás

janoszen · 2008. Júl. 31. (Cs), 20.55
Kérdés, hogy mit szeretnél elérni. Én nem tennék ilyen 1-2-3 stílusú paraméterezést. Szerintem, az lenne a korrekt megoldás, hogy ha minden rászaladna az index.php-ra (a static könyvtár kivételével mondjuk, de mindent kivenni ami létezik, nem a jó megoldás). Miután az index.php megkapta, kitalálja, hogy mit szeretne vele csinálni. Ezek után a HTML-t pedig úgy írod meg, hogy a hivatkozások / jellel kezdődjenek, ugyanis akkor a domainhez képest nézi őket a böngésző.
11

regi, de néha aktuális

Lohan · 2010. Május. 30. (V), 21.22
a css és a képek azért nem jelennek meg, mert azt az elso/masodik/harmadik könyvtáradban keresi
pl:
ha a css-ed itt van: xy.hu/css/style.css
a képek hozzá meg: xy.hu/images/pic.png

RewriteRule ^(.*)css/(.*)$ css/$2 [NC,QSA]
RewriteRule ^(.*)images/(.*)$ images/$2 [NC,QSA]

így ha elso/masodik/harmadik/css/style.css -t keresne azt a css könyvtáradban találja majd