problemy s mod rewrite

Programovacie jazyky, rady, poradňa...
shanoy
Star
Star
Používateľov profilový obrázok
Príspevky: 509
Registrovaný: 30 sep 2006, 8:02
Bydlisko: Brezovapolis
Kontaktovať používateľa:

problemy s mod rewrite

Príspevok od používateľa shanoy »

dobry den, viem, ze to tu uz bolo milionkrat rozoberane..no akosi mi nefachci nasledujuce v htaccess:

Kód: Vybrať všetko

RewriteRule    ^clanok-(.*)/(.)    article.php?id=$1 //toto funguje
RewriteRule    ^kategoria-(.*)/(.)    category.php?cat=$1 //toto funguje
RewriteRule    ^archive/strana/(.*)    archive.php?page=$1 //toto funguje
RewriteRule    ^kategoria-(.*)/(.)/strana/(.*)    category.php?cat=$1&page=$3 //no a toto uz nefunguje
stvrty riadok uz mi nechce fungovat, hoci ostatne funguju..prakticky mam nejaky takyto odkat nieco.com/kategoria-9/Pocasie/strana/4.... no a nechce to fungovat, stale...ten nazov tej kategorie tj Pocasie v tej url category.php nepotrebujem, tam ziskavam len ID teda to cislo za kategoria-...v pripade archive/strana/9 mi strankovanie funguje normalne..prosim vas kde robim chybu? dakujem
dykeer
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 02 jan 2011, 21:21
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa dykeer »

Dám ti odporúčanie: Aj mne sa stávalo, že keď som šiel príliš do hĺbky (veľa parametrov), tak som sa strácal v .htaccess súbore. Preto som prešiel na elegantnejšie riešenie a to parsovanie parametrov v indexe pomocou PHP:

napr. takto

Kód: Vybrať všetko

list($page, $par1, $par2, $par3) = explode("/", $_REQUEST["p"]);
htacces mi vsetko presmeruje na index.php:

Kód: Vybrať všetko

AddType application/x-httpd-php .html
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^nieco\.com$ [NC]
RewriteRule ^(.*)$ http://www.nieco.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa audiotrack »

nezdá sa mi to elegantnejšie riešenie. Každá zmena (pridanie parametru, zmena poradia..) ťa bude stáť veľmi veľa v porovnaní s .htaccess. Navyše je to menej efektívne
shanoy
Star
Star
Používateľov profilový obrázok
Príspevky: 509
Registrovaný: 30 sep 2006, 8:02
Bydlisko: Brezovapolis
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa shanoy »

audiotrack napísal:nezdá sa mi to elegantnejšie riešenie. Každá zmena (pridanie parametru, zmena poradia..) ťa bude stáť veľmi veľa v porovnaní s .htaccess. Navyše je to menej efektívne
a prosím ťa, nevieš prečo mi nechce chodiť toto?

Kód: Vybrať všetko

RewriteRule    ^search/?q=([^/]+)    search.php?q=$1

RewriteRule    ^search/?page=(.*)/?q=(.*) search.php?q=$2&page=$1
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa audiotrack »

neviem, a ani sa mi nechce nad tým rozmýšlať lebo neviem čo znamená "nechce mi to chodiť". Píše chybu? Akú? Nepresmeruje to? Jak sa to správa? Máš tam aj iné príkazy? Ukáž celé .htaccess

keď sa spýtaš normálne a popíšeš problém tak aby sa dal aj vyriešiť tak potom sa môžeme začať o niečom baviť :)
shanoy
Star
Star
Používateľov profilový obrázok
Príspevky: 509
Registrovaný: 30 sep 2006, 8:02
Bydlisko: Brezovapolis
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa shanoy »

ten problem som uz vyriesil inak ako cez htaccess..len teraz by som sa rád spýtal na iné.. a to konkretne, že som si takto

Kód: Vybrať všetko

RewriteEngine on
RewriteBase /


RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+)\.php$ $1 [L,R=301,NE]  
  
                                          
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
ErrorDocument 404 /index.php
RewriteCond %{HTTP_HOST} ^shanoy\.cz\.cc
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ http://www.shanoy.cz.cc/$1 [R=301,QSA]
RewriteRule ^index.php$ http://www.shanoy.cz.cc/$1 [R=301]



RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d       
RewriteRule    ^clanok-(.*)/(.)    article.php?id=$1        [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d         
RewriteRule    ^kategoria-(.*)/(.)    category.php?cat=$1      [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule    ^archive/strana-(.*)/    archive.php?page=$1      [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule    ^strana-(.*)/kategoria-(.*)/(.)    category.php?cat=$2&page=$1        [L]

RewriteCond %{REQUEST_URI} !.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]         
presmeroval "skarede" adresy na pekne..z tvaru article.php?id=21 na clanok-21/Nazov-clanku...a podobne aj s kategoriami...vsetko to funguje...ale potrebujem spravit to aby ked zadam tu staru adresu article.php?id=21 aby to presmerovalo na novu..teraz mi to len presmeruje na index.php resp. na tu 404..ake riadky tam mam pridat? dakujem vopred
sorien
Medium Expert
Medium Expert
Príspevky: 88
Registrovaný: 02 jún 2011, 21:55

Re: problemy s mod rewrite

Príspevok od používateľa sorien »

shanoy napísal:dobry den, viem, ze to tu uz bolo milionkrat rozoberane..no akosi mi nefachci nasledujuce v htaccess:

Kód: Vybrať všetko

RewriteRule    ^clanok-(.*)/(.)    article.php?id=$1 //toto funguje
RewriteRule    ^kategoria-(.*)/(.)    category.php?cat=$1 //toto funguje
RewriteRule    ^archive/strana/(.*)    archive.php?page=$1 //toto funguje
RewriteRule    ^kategoria-(.*)/(.)/strana/(.*)    category.php?cat=$1&page=$3 //no a toto uz nefunguje
stvrty riadok uz mi nechce fungovat, hoci ostatne funguju..prakticky mam nejaky takyto odkat nieco.com/kategoria-9/Pocasie/strana/4.... no a nechce to fungovat, stale...ten nazov tej kategorie tj Pocasie v tej url category.php nepotrebujem, tam ziskavam len ID teda to cislo za kategoria-...v pripade archive/strana/9 mi strankovanie funguje normalne..prosim vas kde robim chybu? dakujem
ked si pozries
[1.]RewriteRule ^kategoria-(.*)/(.)
a
[2.]RewriteRule ^kategoria-(.*)/(.)/strana/(.*)

zistis ze ten prvy riadok splna podmienku aj toho druheho, preto sa to k nemu nikdy nedostane (kategoria-foo/faa/strana/3 splna aj prvu podmienku) namiesto (.*) pouzivaj ([^/]+) malo by to fungovat a na konisc daj /? aby ti to bralo url s lomitkom nakonci (v tvare http://www.foo.fo/faa aj http://www.foo.fo/fa/)

Kód: Vybrať všetko

RewriteRule    ^clanok-([^/]+)/([^/]+?)    article.php?id=$1 //toto funguje
RewriteRule    ^kategoria-([^/]+)/([^/]+?)   category.php?cat=$1 //toto funguje
RewriteRule    ^archive/strana/([^/]+?)    archive.php?page=$1 //toto funguje
RewriteRule    ^kategoria-([^/]+)/([^/]+)/strana/([^/]+?)    category.php?cat=$1&page=$3 //no a toto uz nefunguje
shanoy
Star
Star
Používateľov profilový obrázok
Príspevky: 509
Registrovaný: 30 sep 2006, 8:02
Bydlisko: Brezovapolis
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa shanoy »

diky moc
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: problemy s mod rewrite

Príspevok od používateľa funny102 »

Dobrý večer, nejdem zakladať nové téma, tak píšem tu.
mám taký problém chcem spraviť non www na mojej stránke.
v Htacces mám už kvôli pekným adresám

Kód: Vybrať všetko

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /$1.php 
A chcem tam teraz pridať

Kód: Vybrať všetko

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Lenže mám to nejako dať do kopy? alebo ako?
Funguje to pri mojastranka.sk/kontakt/
ak zadám už www.mojastranka.sk/kontakt/ tak ma presmeruje na http://mojastranka//kontakt.php/
čo už nieje také pekne. Prosím vás ako to mám upraviť aby to bolo dobre? ďakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: problemy s mod rewrite

Príspevok od používateľa audiotrack »

z tohto: [R=301,L] vymaž to L
funny102
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 292
Registrovaný: 07 jan 2006, 18:08

Re: problemy s mod rewrite

Príspevok od používateľa funny102 »

To isté pri zadaní http://www.mojastranka.sk/kontakt/ presmeruje na http://mojastranka//kontakt.php/
.htaccess :

Kód: Vybrať všetko

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /$1.php

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

//edit Už ide zmenil som htaccess na:

Kód: Vybrať všetko

RewriteEngine On
RewriteBase /

# Presmerovanie www na non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,QSA]

# mojastranka.sk/izolacia.php > mojastranka.sk/izolacia/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /$1.php

# Presmerovanie chybových dokumentov na kontakt 
ErrorDocument 404 /kontakt/
ErrorDocument 403 /kontakt/ 
ErrorDocument 500 /kontakt/
Keď si mi poradil zmazať to L, tak som to len presunul na začiatok a ide to tak ako by som chcel, stále bez www a s peknými adresami.
Ďakujem
Napísať odpoveď