Avatar billede n-emy Nybegynder
28. oktober 2008 - 21:22 Der er 13 kommentarer og
1 løsning

Problemer med htaccess

Hejsa

Jeg forsøger at sætte en lås på min "test-hjemmeside" via htaccess. Min htaccessfil ser sådan ud:

AuthName \"Testsiden\"
AuthType Basic
AuthUserFile /home/easyhpdk/www/.htpasswd
require valid-user

Min htpasswd fil ser sådan ud:

Brugernavn:krypteret password.

Men når man åbner filen får jeg følgende problem: http://easyhp.dk/

Derudover har jeg problemer med min mod_rewrite funktion i htaccess. Den ser således ud:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)/([^/]*)/?$ /?navn=$1

Hvis man går ind på et indlæg vises det således som easyhp.dk/overskrift/ Problemet er imidlertid, at der ikke kommer bindestreg mellem ordene hvis det er en sætning, og hvis der er æøå i overskriften kan den ikke vises. Nogen der ved hvordan man kommer ud over det problem?

Mvh
Avatar billede jensgram Nybegynder
28. oktober 2008 - 21:42 #1
AuthName \"Testsiden\" -> AuthName "Testsiden"
Avatar billede showsource Seniormester
28. oktober 2008 - 21:44 #2
AuthName "Testsiden"
AuthType Basic
AuthUserFile /home/easyhpdk/www/.htpasswd
require valid-user

skal det ihvertfald være
Avatar billede showsource Seniormester
28. oktober 2008 - 21:45 #3
Nånå :O) ( så lige noget fjerner inden post )
Avatar billede n-emy Nybegynder
28. oktober 2008 - 21:58 #4
Tak for hjælpen med det hehe =)

Ikke nogen der kan hjælpe mig med mod_rewrite?
Avatar billede jensgram Nybegynder
28. oktober 2008 - 22:03 #5
Jeg må indrømme, at jeg ikke forstår dit problem mht. mod_rewrite. Kan du ikke specificere?
Avatar billede n-emy Nybegynder
29. oktober 2008 - 15:18 #6
Skal prøve =)

I min htaccess fil har jeg skrevet:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)/([^/]*)/?$ /?navn=$1

Så hvis jeg gik ind på easyhp.dk/dette er en testnyhed/ så ville den vise mig siden easyhp.dk/index.php?navn=dette er en testnyhed. Det er som sådan også fint nok, og det virker også i et vist omfang. Det virker dog ikke hvis der er æ, ø eller å i overskriften. Hvis overskriften f.eks. var dætte er en test og man sk
Avatar billede n-emy Nybegynder
29. oktober 2008 - 15:22 #7
Kom til at trykke på send inden jeg var færdig, beklager dobbeltpost.

Skal prøve =)

I min htaccess fil har jeg skrevet:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)/([^/]*)/?$ /?navn=$1

Så hvis jeg gik ind på easyhp.dk/dette er en testnyhed/ så ville den vise mig siden easyhp.dk/index.php?navn=dette er en testnyhed. Det er som sådan også fint nok, og det virker også i et vist omfang. Det virker dog ikke hvis der er æ, ø eller å i overskriften. Hvis overskriften f.eks. var dætte er en test og man skriver easyhp.dk/dætte er en test/ så skulle den jo hente easyhp.dk/index.php?navn=dætte er en test, men det kan den ikke af en eller anden grund. Har kigget rundt på nogle sider, og har lagt mærke til at mange erstatter æ med ae, ø med oe og å med aa i adresselinien.

Mit andet problem er, at jeg gerne vil have ordene forbundet, således at hvis jeg skrev easyhp.dk/dette-er-en-test/ så henter den stadig den nyhed med overskriften dette er en test.

Håber du forstår, ellers sig til =)
Avatar billede jensgram Nybegynder
29. oktober 2008 - 15:49 #8
Ja, men det er jo alt sammen noget du skal gøre i index.php, hvor $_GET['navn'] skal "oversættes". mod_rewrite håndterer kun laget fra request-fra-klienten til request-til-serveren, om man så må sige.

Dvs.: Hold dig til de sikre tegn i URL'en (i.e. hverken mellemrum, æ, ø eller å) og sørg for, at dit PHP-script kan oversætte de pæne URL'en bag facaden.
Avatar billede dkfire Nybegynder
29. oktober 2008 - 15:54 #9
En model kunne jo være at bruge et id i stedet for tekst.
En anden model kunne være at bruge urlencode()/urldecode()
http://dk2.php.net/manual/en/function.urlencode.php

For hvad hjælper pæne url's hvis de ikke kan tydes af søgmaskiner og en browser.
Avatar billede jensgram Nybegynder
29. oktober 2008 - 15:58 #10
Personligt plejer jeg at gøre det - eksempelvis på en nyhedsside, hvor de enkelte nyheder ligger i en DB - at jeg har et felt, urlpath, som jeg (auto)genererer sammen med nyheden:

function generate_url_path($title) {
    $search  = array('/', '&', 'Æ', 'Ø', 'Å', 'æ', 'ø', 'å', 'é');
    $replace = array(' ', 'og', 'æ', 'ø', 'å', 'ae', 'oe', 'aa', 'e');

    $title  = strtolower($title);
    $title  = str_replace($search, $replace, $title);
    $title  = preg_replace('/[^a-z0-9 -]/', '', $title);
    $title  = strtr(trim($title), ' ', '-'); // Remove "empty" characters from ends and replace whitespaces with dashes
    $title  = preg_replace('/\-{2,}/', '-', $title);

    return $title;
}

Dette felt er indekseret (og unikt), så nyheden ret hurtigt kan slås op i DB.
Avatar billede n-emy Nybegynder
30. oktober 2008 - 22:53 #11
Tak for hjælpen =)

Brugte jensgrams til begge dele =) Svar? =)
Avatar billede jensgram Nybegynder
31. oktober 2008 - 15:11 #12
Tjek
Avatar billede n-emy Nybegynder
02. november 2008 - 16:35 #13
Jeg har accepteret dit svar =) Men ville lige høre om du også kunne hjælpe mig med dette så ville jeg være taknemmelig =)

Det virker efter hensigten, men nu virker mine "GET"-aktioner ikke, eksempelvis den der før hed easyhp.dk/index.php?id=1&delete=yes. Nu hedder adressen easyhp.dk/1/ og hvis jeg skriver easyhp.dk/1/?delete=yes sker der ingenting?
Avatar billede jensgram Nybegynder
03. november 2008 - 09:30 #14
Der skal lige en [QSA] (query string append) med på din RewriteRule:

E.g. RewriteRule ^([^/]+)/([^/]*)/?$ /?navn=$1 [QSA]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester