Avatar billede christian-BN Praktikant
20. december 2008 - 12:48 Der er 14 kommentarer

Begynderspørgsmål med rewrite

Hej,
Jeg er helt ny på området, så undskyld hvis det er dumme spørgsmål jeg får stillet.
Jeg vil gerne have en mere brugervenlig url, på en side jeg er ved at opbygge.
For en god ordens skyld har jeg lagt siden ud på nettet.:

http://www.abonde.net/ejby/index.php?p=fysioterapi
Som siden siden udbygges vil der også komme en underværdi
http://www.abonde.net/ejby/index.php?p=fysioterapi&sub=laser

Det jeg leder efter, er en løsning for man skriver
www.site.dk/index/p-værdi/sub-værdi
www.site.dk/index/fysioterapi/laser

Jeg har forsøgt mig med at ændre .htaccess i root folderen abonde.net og tilføjet
"RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)/([^/]*)/?$ /?p=$1&sub=$2"

Det gav ingen effekt, - så prøvede jeg at ligge den i mappen "ejby" sammen med min index.php

Resultatet er at det virker hvis jeg bruger linket
http://www.abonde.net/ejby/index.php?p=fysioterapi
men den ændrede url finder hverken css eller siden.
http://www.abonde.net/ejby/index.php/fysioterapi

Nu har jeg ændret .htacess i ejby-folderen til
ReWriteEngine on
ReWriteBase /
ReWriteCond %{REQUEST_FILENAME} !-F
ReWriteRule ^film/([0-9]+)$ /index.php?p=$1&sub=$2
ReWriteRule ^film/([0-9]+)/$ /index.php?p=$1&sub=$2

Men med samme resultat.
-Hvad gør jeg galt, og hvor skal .htacces egentlig ligge?
Det skal siges at det kun er midlertidigt at siden ligger på min server, når den færdig bliver den selvfølgelig flyttet, og ligger ikke længere i en underfolder, har det nogen indflydelse?

Giver 150 point, men kan øges hvis det ønskes,
Avatar billede jensgram Nybegynder
20. december 2008 - 13:49 #1
.htaccess gælder for den mappe, hvori den ligger, samt undermapper. Derfor er det en god idé at placere den dér, hvor den skal benyttes (i.e. i "ejby").

Grunden til at CSS etc. ikke virker, er, at relative links ikke længere er ift. http://www.abonde.net/ejby/ men derimod http://www.abonde.net/ejby/index.php/ (klienten ved jo ikke bedre end at sidste "/" er udtryk for stien til ressourcen).

Du kan løse problemet med et <base href="http://www.abonde.net/ejby/" /> tag...

Desuden bør du nok skrive en rewrite, hvor index.php ikke indgår, da det bare er spild:
http://www.abonde.net/ejby/index.php/fysioterapi -> http://www.abonde.net/ejby/fysioterapi
Avatar billede christian-BN Praktikant
20. december 2008 - 14:53 #2
Det hjalp ihvertfald en del på forståelsen af css og mit problem med stierne.

Har du eventuelt et link til en side som forklarer lidt mere om rewrite? Jeg har kun læst om det siden i formiddags, så er ret grøn på området. Jeg ved ikke hvordan jeg fjerner index.php fra adressen.

Mit problem er stadig at den ikke henter nogen side ind på http://www.abonde.net/ejby/index.php/about
- Kan det skyldes at jeg bruger php til et inkludere med på index.php?
"if (isset($_GET['p'])) {
$s = $_GET['p'];
switch ($s) { ..."
Avatar billede jensgram Nybegynder
20. december 2008 - 19:39 #3
Du mangler nok et par cases i din switch, for "/motionsclub" virker heller ikke.

Af læsning kan jeg anbefale de tre nederste på http://delicious.com/jensgram/mod_rewrite

God aften og god fornøjelse
Avatar billede christian-BN Praktikant
21. december 2008 - 12:58 #4
Tak for linket,
Jeg har læst om det, men kan stadig ikke få det til at fungere..
På siden fysioterapi http://www.abonde.net/ejby/index.php?p=fysioterapi hentes teksten fint ind,
men på http://www.abonde.net/ejby/index.php/fysioterapi er der ingen tekst.
Jeg har stadig samme kode i .htaccess som står i mit første indlæg, og henter teksten ind via php. - Men det er som om at man ikke kan bruge $_GET mere når man laver rewrite?

        if (isset($_GET['p'])) {
            $s = $_GET['p'];
                switch ($s) {
                case "about":
                  include "about.php";
                  break;
                case "fysioterapi":
                    include "fysioterapi.php";
                    break;
                case "wellnes":
                    include "wellness.php";
                    break;
                default:
                    echo "Ingen side kunne findes som er lig $i";
            }
        }
        else { print "Ingen side er valgt"; }
Avatar billede jensgram Nybegynder
21. december 2008 - 14:46 #5
prøv en

var_dump($_GET);

for at se, hvad der sendes med.
Avatar billede christian-BN Praktikant
21. december 2008 - 17:37 #6
Jeg har forsøgt at rode lidt med det, men får hele tiden et tomt array..
eks.
http://www.abonde.net/ejby/index.php/about
http://www.abonde.net/ejby/index.php/fysioterapi

Så jeg går ud fra at fejlen ligger i rewrite-delen, men kan ikke gennemskue den.
Min .htaccess er :
# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

ReWriteEngine on
ReWriteBase /
ReWriteCond %{REQUEST_FILENAME} !-F
ReWriteRule ^([0-9]+)$ /index.php?p=$1&sub=$2
ReWriteRule ^([0-9]+)/$ /index.php?p=$1&sub=$2

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
Avatar billede jensgram Nybegynder
21. december 2008 - 19:01 #7
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^(.+)$ /index.php?p=$1

Hvad sker der så?
Avatar billede christian-BN Praktikant
21. december 2008 - 19:05 #8
Outputtet er "array(0) { }"
Avatar billede jensgram Nybegynder
21. december 2008 - 19:31 #9
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^(.+)$ index.php?p=$1 [L]


?
Avatar billede christian-BN Praktikant
21. december 2008 - 19:37 #10
stadig array(0) { }
Avatar billede jensgram Nybegynder
21. december 2008 - 19:44 #11
Og .htaccess ligger i mappen "ejby"?
Avatar billede christian-BN Praktikant
21. december 2008 - 19:52 #12
jep ..,
og indeholder hvad du har skrevet.
Har forsøgt mig online og lokalt. Virker ingen af stederne.
Avatar billede jensgram Nybegynder
21. december 2008 - 20:03 #13
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)$ index.php?p=$1 [L]

Hvis ikke den vil give noget, så giver jeg op :)
Avatar billede jensgram Nybegynder
22. december 2008 - 15:44 #14
Evt.

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)$ info.php?p=$1 [L]


Hvor info.php KUN indeholder:

<?php phpinfo(INFO_VARIABLES); ?>
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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