PDA

Pogčedajte punu verziju : Pitanje u vezi .htaccess (potreban rule)


Dragan Babić
19. 03. 2006., 12:12
Negde davno sam pročitao u nekom članku (koji sad nema leba da nađem) da ne valja imati i www.domen.com i http://domen.com zbog SEOa (valjda to pretrazivaci vide kao dva domena).
E sada meni to nije toliko zbog SEO trenutno, mada to nikada ne škodi jeli, ali mi je potrebno da se posetilac uvek redirektuje na http://domen.com i kada kuca www.domen.com.

Zna li neko kako?

Blood
19. 03. 2006., 12:34
probaj ovako:

RewriteEngine on
RewriteBase http://domen.com
RewriteRule ^www/(.*)$ http://domen.com [L]

Dragan Babić
19. 03. 2006., 17:42
A šta ako već imam ovo u .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

RewriteRule ^(.*) index.php
</IfModule>
Kako da ih uklopim?

Blood
19. 03. 2006., 18:02
Probaj ovako, trebalo bi da radi:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase http://domen.com

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R,L]
RewriteRule ^(.*) index.php
RewriteRule ^www/(.*)$ http://domen.com/$1 [L]
</IfModule>

Ako ne radi, onda je greska u $1 pa probaj bez njega...

Dragan Babić
19. 03. 2006., 18:16
uh-huh, ne fercera... :(

cvele
19. 03. 2006., 18:44
to si procitao verovatno ovde http://blog.default.co.yu/solving-seo-related-domain-problems/
(moj blog)

Dragan Babić
19. 03. 2006., 18:50
Poydrav Cvele, hvala na linku, veoma mogu'e da je tvoj blog, ali je trenutno nedostupan sajt. Probaću opet malo kasnije.

Blood
19. 03. 2006., 19:15
Probaj samo ovako:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase http://domen.com/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

RewriteRule ^(.*) index.php
</IfModule>

Dragan Babić
19. 03. 2006., 19:27
dodao sam ovo i radi:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^(.*)$ http://dnevnikeklektika.com/$1 [R=301,L]

ivanhoe
20. 03. 2006., 04:39
a zasto izbacivati www, zar nije logicnije dodati www kad ga nema ?

Iz cisto prakticnih razloga, jer naprimer prvo vise ljudi kuca www na pocetku (pa ces ustedeti sebi redirecte), a drugo sto u vecini mail clienata kad se otkuca www.nesto.com, to se automatski pretvori u link, a bez www nece biti link, morace ljudi da kopiraju...

EDIT: evo, ovo za link vazi i za ovaj forum, kao sto vidite pretvorio je adresu gore u link...

cvele
20. 03. 2006., 08:07
kako ono bese?

www.slashdot.com :P :)

obrati paznju na url

ivanhoe
20. 03. 2006., 10:46
kako ono bese?

www.slashdot.com :P :)

obrati paznju na url


ma ok, znam ja za tu celu pricu, postoji koliko se secam i sajt posvecen promociji ideje da je www evil, ali i dalje stoji da si ti ovim svojim linkom naterao slashdot server da uradi jedan external redirect, a spreman sam da se kladim u levo jaje da ce vise ljudi da kuca www.slashdot nego samo slashdot... a to znaci da dupliras broj zahteva na serveru...

Zato ja obicno uradim istu tu stvar, 301 redirect, ali guram sve korisnike na www. , po meni je to pametnije... ako postoje neki razlozi za stav da ne treba imati www. recite, ja jos nisam cuo dobro objasnjenje...

neki kazu da su onda linkovi kraci za kucanje, ali prvo to je samo 4 karaktera, a i onda ne radi CTRL+Enter u browserima, tako da su na kraju u stvari sporiji za kucanje...

Dragan Babić
20. 03. 2006., 11:08
A šta ja znam ivanhoe, ja namestio ovako jer e to moja lična preferencija pravo da ti kažem, nemam toliko popularan i traffic-heavy sajt da bih "opteretio" nečiji server ;), a u nekim novim alatima za statistiku sam podesio http://dnevnikeklektika.com a taj alat gleda na www.dnevnikeklektika.com kao drugi domen. (Ako nekoga interesuje kako radi, idi na moj sajt i pritisni Alt+X, eksperimentišem sa njime, mada još ne mogu tvrditi u njegovu pouzdanost jer iz tri alata za merenje traffica dobijam tri različite cifre)

ivanhoe
20. 03. 2006., 12:05
ma ok, naravno da je prilicno svejedno, nego cisto dosta poznatih faca tvrdi da treba izbaciti www iz upotrebe....a meni se to cini kao manje logicno resenje od 2 moguca, pa cisto teoretisem malo...as usual ;)

Dragan Babić
20. 03. 2006., 12:15
E a jer mora da me baci sa www.domen.com na http://domen.com/index.php ili moze i samo na http://domen.com ?

[nq]
20. 03. 2006., 20:31
Ok, pazi sad.

Ako imam .htaccess na glavnom domenu i hosting mi omogucava dodavanje novih domena, tj. u vidi direktorijuma da li taj .htaccess utice na daj "drugi domen" tj. direktorijum ?

Odgovor je verovatno da, ali da proverim.

Dragan Babić
20. 03. 2006., 20:43
koliko znam pravila navedena u .htaccess fajlovima se nasledjuju. Dakle ako za root stavis nesto tipa DirectoryIndex splash.html splash.php, to pravilo ce ti biti primenjeno i na recimo /portfolio direktorijum. Sto ce reci -- moras gaziti tamo gde ga neces.

ivanhoe
21. 03. 2006., 06:52
E a jer mora da me baci sa www.domen.com na http://domen.com/index.php ili moze i samo na http://domen.com ?

apache prvo uradi mapiranje adrese na fajl sistem, da bi znao koji .htaccess da gleda. Zato prvo doda podrazumevani index.php na kraj, pa tek onda pozove rewrite na tome...

Treba uhvatiti taj specificni slucaj zasebno:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^index\.php http://dnevnikeklektika.com/ [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^(.*)$ http://dnevnikeklektika.com/$1 [R=301,L]


mozda ovo moze da se sve strpa u jedan izraz, ali radice i ovako...

Dragan Babić
21. 03. 2006., 11:20
radi savrseno, hvala ivanhoe.

oliver
05. 12. 2006., 07:22
Da ne otvaram novu temu, i ja cu istresti svoju muku ovdje :)

Imam ovo:


RewriteEngine on
RewriteBase /prvo
RewriteRule ^$ drugo/ [L]
RewriteRule (.*) drugo/$1 [L]


Dakle, /prvo/123/456/789... biva poslato kao /prvo/drugo/123/456/789...

E sad, ako imam, recimo, /prvo/ovo_ne_treba/, po defaultu i to ode kao /prvo/drugo/ovo_ne_treba, sto je u sustini URL koji ne postoji. Treba mi samo 1 folder i ono "ispod" njega da bude exclude-ovano, sve ostalo treba da ide po rule-u. KAKO? :) Razbio sam se od guglanja, ono za sta sam bio 100% siguran da ce da rijesi problem - nije. A, imam i utisak da treba da me bude sramota radi ovakvog "problema" :1027:

- RewriteCond %{REQUEST_FILENAME} !-f <- ne radi, a koliko sam ukapirao, treba da provjeri da li postoji fajl na serveru pa onda da "ide dalje" sa rule-ovima.
- RewriteCond %{REQUEST_URI} !^.*/ovo_ne_treba/.*$ <- takodje ne radi, a cini mi se da bi trebalo da je to ono sto meni treba...

Ovi primjeri iznad su mi bili nekako "najlogicniji" pa sam ih bacio ovdje, mozda nekome olaksa stvar. Ode sat vremena, produktivnost: nula :1043: Ide toceno veliko za onog ko provali sta mi treba i napise tu famoznu liniju koda :)

Dragan Babić
05. 12. 2006., 10:40
Ne znam da li će pomoći, ali evo jednog zanimljivog članka o .htaccess:
http://www.askapache.com/2006/htaccess/htaccesselite-ultimate-htaccess-article.html

ivanhoe
05. 12. 2006., 14:17
Najlakse je ovako:
RewriteEngine on
RewriteBase /prvo

RewriteRule ^ovo_ne_treba - [QSA,L]

RewriteRule ^$ drugo/ [L]
RewriteRule (.*) drugo/$1 [L]



crtica znaci da ne uradi nista.. E, sad, ti ovde imas jedan potencijalni problem, sto u drugo/ direktorijumu moras da imas .htaccess sa RewriteEngine Off inace ce ti upadati u beskonacnu petlju zbog poslednjeg catch_all (.*) pravila. Jer kad se uradi rewrite u drugo/ dir, opet se poziva ovaj isti htaccess iz parent dir-a i tu onda nastaje dead loop, ako ne iskljucis dalji rewrite. Na nekim serverima je ovo hijerarhijsko pozivanje htaccess iskljuceno po defaultu (jer trosi resurse), ali na nekim nije, pa da se ne iznenadis. Ako dobijes "mod_rewrite: maximum number of internal redirects reached..." gresku, to je dead loop..

oliver
05. 12. 2006., 17:30
@ivanhoe: RADI! :1042: za svaki slucaj sam stavio RewriteEngine Off, sto je sigurno - sigurno.

@Dragan: bukmarkov'o, fala ziv biJo :1081:

...moram jednom da zasjednem i posvetim se mod_rewrite-u, nema smisla vise ovako :) hvala puno, uljepsali ste mi jutro (yap, ustao u 16:00...)

Dragan Babić
23. 03. 2007., 16:11
Ivanhoe, koristim kôd koji si napisao u 18. (http://devprotalk.com/showpost.php?p=9398&postcount=18) odgovoru na ovoj temi, ali sam primetio da on radi samo kada je u pitanju URI www.dnevnikeklektika.com, ako je u pitanju www.dnevnikeklektika.com/nesto on opet redirektuje na http://dnevnikeklektika.com/index.php, a ne na http://dnevnikeklektika.com/nesto, da li on tako treba da se ponaša ili je u pitanju nešto drugo?

Evo i dela sadržaja mog .htaccessa:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

RewriteRule ^(.*) index.php
</IfModule>

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^index\.php http://dnevnikeklektika.com/ [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^(.*)$ http://dnevnikeklektika.com/$1 [R=301,L]

Dragan Babić
23. 03. 2007., 18:52
OK, rešeno - pravila za no-www moraju da idu pre ovih za mod rewrite <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^index\.php http://dnevnikeklektika.com/ [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule ^(.*)$ http://dnevnikeklektika.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]

RewriteRule ^(.*) index.php
</IfModule>

robi-bobi
23. 03. 2007., 22:48
nije li lakse:

RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule (.*) http://dnevnikeklektika.com/$1 [R=301,L]
mozda je malo sporije, al po meni lakse i logicnije
takodje, hvataju se i stranice koje ne 'prolaze kroz index.php'

bluesman
24. 03. 2007., 01:09
Mnogo je logičnije i preglednije, mada ne znam zašo bi to neko radio :)

ivanhoe
24. 03. 2007., 05:59
nije li lakse:

RewriteCond %{HTTP_HOST} ^www\.dnevnikeklektika\.com$
RewriteRule (.*) http://dnevnikeklektika.com/$1 [R=301,L]



jeste, i lakse i lepse, mada radi isti posao..