qualbeen Skrevet 9. februar 2006 Del Skrevet 9. februar 2006 (endret) Hei alle sammen! Problem 1 På siden min har jeg en del linker av typen "www.mittdomene.com/index.php?id=2&s=3". Jeg har søkt litt rundt for å gjøre om denne URL'en til "www.mittdomene.com/2/3", men har ikke klart å finne en tutorial som jeg forstår 100%... Grunnen til at jeg trenger en slik løsning er at Google og andre søkemotorer ikke indekserer fil-stier som inneholder ?,& og lignende tegn. Noen der ute som kan hjelpe meg? Jeg har prøvd meg på denne løsningen, men alt ble tull da jeg skulle fikse .htaccess-fila. (Jeg fikk bare opp en Internal Server Error) Problem 2 Jeg driver også å tester ut CuteNews, noen som vet om hvordan gjøre om artikkel-linkene til å inneholde f.eks. overskriften? (istedenfor kun id-nr.) Edit: Problem 3 Kjøre php-kode i fil som IKKE slutter på .php Oppdatert topic, fordi jeg nå også lurer på hvordan man kan ha ei php-fil som ikke slutter på .php Endret 11. februar 2006 av qualbeen Lenke til kommentar
Zic0 Skrevet 9. februar 2006 Del Skrevet 9. februar 2006 Løsning til problem 1: Du må først lære deg litt om dette med mod_rewrite. Da må du også kunne litt regexp (Regular expressions, google it!). Ved hjelp av det kan du sette mønsteret på hvordan den skal få for eksempel: 2/3 til å bli ?id=2&s=3. Etter det må du modifisere cutenews til at den lager link på den nye måten (2/3). Løsning til problem 2: Du må også modifsere hvordan cutenews legger til linkene der også. Lenke til kommentar
MC2 Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 du kan løse problem 1 uten å lære deg mod_rewrite (såvidt jeg vet), alt du trenger er en veldig enkel .htaccess fil og et enkelt php script. altså: i .htaccess skriver du <Files .htaccess> order allow,deny deny from all </Files> ErrorDocument 401 /top/level/path/til/ditt_script.php ErrorDocument 403 /top/level/path/til/ditt_script.php ErrorDocument 404 /top/level/path/til/ditt_script.php og i php scriptet ditt bruker du da: <?php // hent requested url $url = $_SERVER['REQUEST_URI']; // hente hostname $host = $_SERVER["HTTP_HOST"]; $l_host = strlen($host); // fjerne host name, fjerne http://www.example.net/ $url = substr($url,$l_host); // hent ut info fra url-en $url = explode("/",$url); $id = $url[0]; $s = $url[1]; ?> skrev dette scriptet nå i farta så jeg har ikke fått testet det. mulig det ikke funker, hvis ikke så er det bare å spørre igjen. sikkert mange som kan dette. som du sikkert ser er det veldig enkelt å tilpasse scriptet ditt til dine behov. Lenke til kommentar
qualbeen Skrevet 10. februar 2006 Forfatter Del Skrevet 10. februar 2006 (endret) takk for alle svar! Problem nr 2 løste jeg ved hjelp av denne. Dermed kan jeg konsentrere meg om nr 1: Jeg har i .htaccess prøvd å fortelle serveren at fila mi "php" er en php-fil (php.php) slik: <Files php> ForceType application/x-httpd-php </Files> ErrorDocument 401 /error/401.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html Har jeg gjort noen feil her? Er det ikke slik at en url på følgene vis www.mittdomene.com/subdomene/php/blablabla/12 vil bli lik som www.mittdomene.com/subdomene/php.php/blablabla/12 ? I såfall burde jeg kunne bruke $var_array = explode("/",$PATH_INFO); $var_array[0] //php.php $var_array[1] //blablabla $var_array[2] //12 Eller er jeg helt på bærtur her?? Forresten - som dere ser skal dette fungere på en undermappe på hjemmesida mi. Hvor skal jeg legge .htaccess-fila? I roten eller i den aktuelle mappa? Endret 10. februar 2006 av qualbeen Lenke til kommentar
MC2 Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 en .htaccess fil som er roten vil telle for alle mappene under, hvis du skjønner... men se på scriptene jeg har skrevet over, tror de vil hjelpe. Lenke til kommentar
qualbeen Skrevet 10. februar 2006 Forfatter Del Skrevet 10. februar 2006 oki, takk takk Bruker følgende srcipt, og det funger fint: Fil som heter php.php <?php // hent requested url $url = $_SERVER['REQUEST_URI']; // hente hostname $host = $_SERVER["HTTP_HOST"]; $l_host = strlen($host); // fjerne host name, fjerne http://www.example.net/ // $url = substr($url,$l_host); // hent ut info fra url-en $url = explode("/",$url); $var0 = $url[0]; $var1 = $url[1]; $var2 = $url[2]; $var3 = $url[3]; $var4 = $url[4]; echo "var0 = $var0<br /> var1 = $var1<br /> var2 = $var2<br /> var3 = $var3<br /> var4 = $var4<br /> osv..."; //bare for å sjekke om dette funker... ?> Som dere kan se selv fungerer dette fint: test-siden min Takk for tips MC2, men jeg ønsker ikke å genere masse 404-trafikk vha.: ErrorDocument 401 /top/level/path/til/ditt_script.phpErrorDocument 403 /top/level/path/til/ditt_script.php ErrorDocument 404 /top/level/path/til/ditt_script.php fordi da får man masse error-kode o.l. ved gjennomgåing av rapporter fra nettstedet. Videre problem: Ønsker å endre fila "php.php" til å hete kun "php". (Eller noe annet - men uten punktumet). Vet at det skal kunne gjøres, men jeg får det ikke til Har prøvd å skrive <Files php> ForceType application/x-httpd-php </Files> i .htaccess uten hell... Url til ikke-fungerende srcipt: trykk her. Lenke til kommentar
Magnus Holm Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 Får du ikke renamet php.php til bare php, da? Hvis det ikke går i Explorer så kan du prøve å åpne den i notepad, velge Lagre som, velger "Alle filer" i Filtype, skriver inn "php". Lenke til kommentar
MC2 Skrevet 10. februar 2006 Del Skrevet 10. februar 2006 Videre problem:Ønsker å endre fila "php.php" til å hete kun "php". (Eller noe annet - men uten punktumet). Vet at det skal kunne gjøres, men jeg får det ikke til 5583372[/snapback] altså, endre "fysisk" sånn at fila heter php og blir kjørt som enhver .php fil eller at når en går inn på urlen og skriver example.com/php/whatev så blir php.php kjørt? Lenke til kommentar
qualbeen Skrevet 11. februar 2006 Forfatter Del Skrevet 11. februar 2006 altså, endre "fysisk" sånn at fila heter php og blir kjørt som enhver .php fil eller at når en går inn på urlen og skriver example.com/php/whatev så blir php.php kjørt? 5585710[/snapback] Jepp, tror du forstod problemet mitt! Det er selvfølgelig intet problem å rename php.php til bare php - men serveren min forstår ikke at denne nye fila uten "etternavn" skal behandles som en php-fil. Hvis dere ser på url'ene til de to linkene jeg la ut ser dere at de er nesten helt like, bortsett fra at den ene bruker .../php.php/... men den andre peker til .../php/... php.php og php inneholder nøyaktig samme kode, men kun den som heter php.php virker. Derfor: hvordan få serveren min til å behandle sistnevnte fil som en php-fil? Ser nå i ettertid at jeg uttrykte meg klønete i forrige innlegg, ikke rart det ble misforståelser Lenke til kommentar
MC2 Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 hvor har du lagt .htaccess filen din og hva står det i den? alternativt sett kan du bare lage en mappe som heter php og legge .htaccess filen i den, men det er sikkert ikke sånn du vil ha det Lenke til kommentar
Magnus Holm Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 <Files php> ForceType application/x-httpd-php </Files> (Funker sikkert ikke, men prøve må man jo ) Lenke til kommentar
qualbeen Skrevet 11. februar 2006 Forfatter Del Skrevet 11. februar 2006 (endret) Slik ser .htaccess-fila mi ut, og den har jeg lagt i rot-mappa (altså http://qualbeen.net/.htaccess): <Files php> ForceType application/x-httpd-php </Files> ErrorDocument 400 http://qualbeen.net/index.php?error=404 ErrorDocument 401 http://qualbeen.net/index.php?error=403 ErrorDocument 403 http://qualbeen.net/index.php?error=403 ErrorDocument 404 http://qualbeen.net/index.php?error=404 ErrorDocument 408 http://qualbeen.net/index.php?error=50x ErrorDocument 500 http://qualbeen.net/index.php?error=50x ErrorDocument 501 http://qualbeen.net/index.php?error=50x ErrorDocument 502 http://qualbeen.net/index.php?error=50x ErrorDocument 503 http://qualbeen.net/index.php?error=50x I samme mappe har jeg en fil kalt php, den ser slik ut: <?php // hent requested url $url = $_SERVER['REQUEST_URI']; // hente hostname $host = $_SERVER["HTTP_HOST"]; $l_host = strlen($host); // fjerne host name, fjerne http://www.example.net/ // $url = substr($url,$l_host); // hent ut info fra url-en $url = explode("/",$url); $var0 = $url[0]; $var1 = $url[1]; $var2 = $url[2]; $var3 = $url[3]; $var4 = $url[4]; echo "var0 = $var0<br /> var1 = $var1<br /> var2 = $var2<br /> var3 = $var3<br /> var4 = $var4<br /> osv..."; //bare for å sjekke om dette funker... /* $var_array = explode("/",$PATH_INFO); echo $var_array[0]; //php.php echo $var_array[1]; //blablabla echo $var_array[2]; //12 */ ?> Skriver man inn adresse http://qualbeen.net/php/tull/tøys så burde dette scriptet fungere, og printe "tull" og "tøys" til skjerm. Dette fungerer ikke - istedet kommer det en 400 eller 404 error (jeg vet ikke hvilken ) NB: nøyaktig samme script ligger ute på http://qualbeen.net/php.php/tull/tøys, så jeg vet at scriptet virker! Noen som kan hjelpe meg? Endret 11. februar 2006 av qualbeen Lenke til kommentar
MC2 Skrevet 11. februar 2006 Del Skrevet 11. februar 2006 det eneste som jeg kan komme på nå er at når du skriver inn denne urlen: http://qualbeen.net/php/blablablabla/heihei/tuddelidu så leter den etter en mappe som heter php, og når du trykker inn http://qualbeen.net/php.php/blablablabla/heihei/tuddelidu så leter den etter mappa php.php og hvis den ikke finnes så fila php.php det du da må gjøre er å redirecte all 401, 403 og 404 trafikk til php.php i .htaccess filen din. og la det scriptet sortere ut om det er feil eller ikke. litt mer jobb altså. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå