rewrite

Programovacie jazyky, rady, poradňa...
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

rewrite

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

mám

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?clanok=$1 [L,QSA]

ktorý mi robí to že ked zadám web.sk/web == web.sk/index.php?clanok=web

a potrebujem ho upraviť aby keď zadám en.web.sk/web == web.sk/index.php?clanok=web&preklad=en...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Toto bude fungovať iba pre en (ak to nebude stačiť, môžem sa skúsiť poztrieť na to, ako by sa to dalo urobiť univerzálnejšie).

Kód: Vybrať všetko

RewriteEngine On

RewriteCond %{SERVER_NAME}	^en\..*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$		/index.php?clanok=$1&preklad=en	[L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$		/index.php?clanok=$1	[L,QSA]
// chrono: vlastne to môže byť jednoduchšie

Kód: Vybrať všetko

RewriteEngine On

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

RewriteCond %{SERVER_NAME}	^en\..*
RewriteRule ^(.*)$		$1?preklad=en	[L,QSA]
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

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

neviem ale nejak to nejde...skús

dnw.sk normálne ide
ale en.dnw.sk nejde...podotýkam subdomény sa normalne vytvarajú /subdomians/adresar subdomeny/
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Urob php súbor:

Kód: Vybrať všetko

<?php
    print_r($_SERVER);
?>
daj ho do oboch subdomén, a výpis sem vlož. (ja som totiž nerátal s tým, že aj pre en. máš subdoménu)
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

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

dnw.sk

Kód: Vybrať všetko

Array ( [UNIQUE_ID] => TbXiIlZu4fcAALhKvJMAAAA@ [HTTP_HOST] => dnw.sk [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.2; sk; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 [HTTP_ACCEPT_LANGUAGE] => sk,cs;q=0.8,en-us;q=0.5,en;q=0.3 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 [HTTP_KEEP_ALIVE] => 300 [HTTP_CONNECTION] => keep-alive [PATH] => .:.:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/davidisko/bin [SERVER_SIGNATURE] =>
Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7m PHP/4.4.6 with Suhosin-Patch Server at dnw.sk Port 80
[SERVER_SOFTWARE] => Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7m PHP/4.4.6 with Suhosin-Patch [SERVER_NAME] => dnw.sk [SERVER_ADDR] => 86.110.225.247 [SERVER_PORT] => 80 [REMOTE_ADDR] => 91.127.45.228 [DOCUMENT_ROOT] => /webhosting/upnito.sk/ [SERVER_ADMIN] => [email protected] [SCRIPT_FILENAME] => /webhosting/dnw.sk/dbl.php [REMOTE_PORT] => 1200 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /dbl.php [SCRIPT_NAME] => /dbl.php [PHP_SELF] => /dbl.php [PATH_TRANSLATED] => /webhosting/dnw.sk/dbl.php [argv] => Array ( ) [argc] => 0 )
en.dnw.sk

Kód: Vybrať všetko

Array ( [UNIQUE_ID] => UUS1uVZu4fcAALhTzlQAAAAA [HTTP_HOST] => en.dnw.sk [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.2; sk; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 [HTTP_ACCEPT_LANGUAGE] => sk,cs;q=0.8,en-us;q=0.5,en;q=0.3 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 [HTTP_KEEP_ALIVE] => 300 [HTTP_CONNECTION] => keep-alive [PATH] => .:.:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/davidisko/bin [SERVER_SIGNATURE] =>
Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7m PHP/4.4.6 with Suhosin-Patch Server at en.dnw.sk Port 80
[SERVER_SOFTWARE] => Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.7m PHP/4.4.6 with Suhosin-Patch [SERVER_NAME] => en.dnw.sk [SERVER_ADDR] => 86.110.225.247 [SERVER_PORT] => 80 [REMOTE_ADDR] => 91.127.45.228 [DOCUMENT_ROOT] => /webhosting/upnito.sk/ [SERVER_ADMIN] => [email protected] [SCRIPT_FILENAME] => /webhosting/dnw.sk/subdomains/en/dbl.php [REMOTE_PORT] => 1213 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => preklad=en [REQUEST_URI] => /dbl.php [SCRIPT_NAME] => /dbl.php [PHP_SELF] => /dbl.php [PATH_TRANSLATED] => /webhosting/dnw.sk/subdomains/en/dbl.php [argv] => Array ( [0] => preklad=en ) [argc] => 1 )
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Ako tam máš riešené tie subdomény (lebo to zle funguje aj pri iných, nie len pri en)?
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

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

ono nejde to vobec pri subdomene..asi viem kde je chyba...asi nenajde subor index.php

takto som to zmenil:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://dnw.sk/index.php?clanok=$1 [L,QSA]

RewriteCond %{SERVER_NAME} ^en\..*
RewriteRule ^(.*)$ $1?preklad=en [L,QSA]

ale robi to problem ... vid en.dnw.sk
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Problém je aj napr. pri cz.dnw.sk (pri všetkých subdoménach okrem www). Ako sú tam riešené tie subdomény (asi je to tiež cez mod_rewrite)? Robil si to ty, alebo to môžeš aspoň zmeniť?
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

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

chrono napísal:Problém je aj napr. pri cz.dnw.sk (pri všetkých subdoménach okrem www). Ako sú tam riešené tie subdomény (asi je to tiež cez mod_rewrite)? Robil si to ty, alebo to môžeš aspoň zmeniť?
asi cez rewrite .. ja som ten server nerobil ale admin to uz riesi

btw skús mi to prepísať tak aby to bralo udaje formou

dnw.sk/$1/

a nie tymto


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

warezman napísal:btw skús mi to prepísať tak aby to bralo udaje formou

dnw.sk/$1/

a nie tymto

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Ten prvý RewriteCond zabezpečí, že ak zadáš dnw.sk/aaa a aaa je súbor, tak sa nebude adresa prepisovať (to druhe je zase pre prípad, že by to bol adresár).

Čo vlastne teraz potrebuješ vyriešiť?
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

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

chrono napísal:Ten prvý RewriteCond zabezpečí, že ak zadáš dnw.sk/aaa a aaa je súbor, tak sa nebude adresa prepisovať (to druhe je zase pre prípad, že by to bol adresár).

Čo vlastne teraz potrebuješ vyriešiť?
to je jedno...

RewriteEngine On
RewriteCond %{HTTP_HOST} ^en.dnw.sk$
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/dbl.php?clanok=$1&preklad=en

najdi mi v tomto chybu prosim preco to nejde
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

Ja by som nepoužil %{HTTP_HOST} (prehliadač to nemusí poslať), ale radšej %{SERVER_NAME}. Tiež nie je dobrý nápad vyhadzovať tie RewriteCond %{REQUEST_FILENAME} !-f a RewriteCond %{REQUEST_FILENAME} !-d (aby, keď zadáš nejaký súbor alebo adresár, sa to zbytočne neprepisovalo).

// chrono: ak už tam musíte mať tie subdomény, nemohli by ste pre en urobiť výnimku (aby sa subdoména en neprepisovala)
ehm123
King
King
Príspevky: 1658
Registrovaný: 27 feb 2006, 6:45
Bydlisko: PD / Praha

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

už je to vyriešene

toto som dal do subdomeny en

RewriteEngine On
RewriteCond %{SERVER_NAME} ^en\..*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?clanok=$1

<?php
$lang="en";
include("/webhosting/dnw.sk/index.php");
?>

a ide to ako má
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

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

ešte tam uprav tie absolútne linky na relatívne (lebo pri absolútnych sa to prepína z angličtiny do slovenčiny). Skúšali ste to aj vo Firefoxovi (ten vzhľad)? Lebo tam to vyzerá dosť zvláštne (ale Konqueror to zobrazuje normálne).

// chrono: súvisí to s tým, že FF načíta nesprávny css
// chrono: už mi to začalo fungovať (neviem, v čom bol problém)
Napísať odpoveď