DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Regular expression i htaccess (http://www.devprotalk.com/forumdisplay.php?f=41)
-   -   Pitanje u vezi .htaccess (potreban rule) (http://www.devprotalk.com/showthread.php?t=805)

Dragan Babić 19. 03. 2006. 11:12

Pitanje u vezi .htaccess (potreban rule)
 
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. 11:34

probaj ovako:

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

Dragan Babić 19. 03. 2006. 16:42

A šta ako već imam ovo u .htaccess:
Kôd:

<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. 17:02

Probaj ovako, trebalo bi da radi:
Kôd:

<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. 17:16

uh-huh, ne fercera... :(

cvele 19. 03. 2006. 17:44

to si procitao verovatno ovde http://blog.default.co.yu/solving-se...main-problems/
(moj blog)

Dragan Babić 19. 03. 2006. 17: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. 18:15

Probaj samo ovako:

Kôd:

<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. 18:27

dodao sam ovo i radi:
Kôd:

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


ivanhoe 20. 03. 2006. 03: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. 07:07

kako ono bese?

www.slashdot.com :P :)

[blah]obrati paznju na url[/blah]

ivanhoe 20. 03. 2006. 09:46

Citat:

Originalno napisao cvele
kako ono bese?

www.slashdot.com :P :)

[blah]obrati paznju na url[/blah]


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. 10: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. 11: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. 11: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. 19: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. 19:43

koliko znam pravila navedena u .htaccess fajlovima se nasledjuju. Dakle ako za root stavis nesto tipa
Kôd:

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. 05:52

Citat:

Originalno napisao Dragan
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:

Kôd:

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. 10:20

radi savrseno, hvala ivanhoe.

oliver 05. 12. 2006. 06:22

Da ne otvaram novu temu, i ja cu istresti svoju muku ovdje :)

Imam ovo:

Kôd:

    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. 09:40

Ne znam da li će pomoći, ali evo jednog zanimljivog članka o .htaccess:
http://www.askapache.com/2006/htacce...s-article.html

ivanhoe 05. 12. 2006. 13:17

Najlakse je ovako:
Citat:

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. 16: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. 15:11

Ivanhoe, koristim kôd koji si napisao u 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:
Kôd:

<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. 17:52

OK, rešeno - pravila za no-www moraju da idu pre ovih za mod rewrite
Kôd:

<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. 21:48

nije li lakse:
Citat:

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. 00:09

Mnogo je logičnije i preglednije, mada ne znam zašo bi to neko radio :)

ivanhoe 24. 03. 2007. 04:59

Citat:

Originalno napisao robi-bobi
nije li lakse:
Kôd:

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


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


Vreme je GMT +2. Trenutno vreme je 09:08.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.