Avatar billede agurken Nybegynder
02. maj 2010 - 17:34 Der er 22 kommentarer og
1 løsning

URL rewrite .htaccess

Hej.

Jeg sidder med et problem med .htaccess og rewriting.

Jeg har denne url: http://localhost/Blog/entry.php?article=First-article som jeg gerne vil have til at blive: http://localhost/Blog/article/First-article?
Avatar billede Slettet bruger
02. maj 2010 - 20:03 #1
Hvordan ser din .htaccess ud, eller hvad har du prøvet af?
Avatar billede agurken Nybegynder
02. maj 2010 - 20:30 #2
Jeg har prøvet med dette:
RewriteEngine on
RewriteRule ^/article/(.*)+/$ entry.php?article=$1
Avatar billede Slettet bruger
02. maj 2010 - 21:31 #3
Lige for at få factsne på plads, så skal selv omskrive dine url-adresser til den "pæne" version og bruger mod_rewrite i .htaccess til at fodre PHP.

Eksempel
Links:
<a href="/Blog/article/First-article">First Article</a> => entry.php?article=First-article
<a href="/Blog/article/Second-article">Second Article</a> => entry.php?article=Second-article

mod_rewrite i .htaccess:
RewriteEngine on
RewriteRule ^/Blog/article/(.*)$ entry.php?article=$1

Håber det kan hjælpe dig!
Avatar billede agurken Nybegynder
02. maj 2010 - 21:54 #4
Det virker stadig ikke, men tak for svaret
Avatar billede Slettet bruger
02. maj 2010 - 23:23 #5
Hvis du vil have jeg skal kigge yderligere på dit problem, skal jeg bruge lidt mere information om dit problem.
Avatar billede agurken Nybegynder
02. maj 2010 - 23:33 #6
Jamen mit problem er at den rewrite jeg skriver i .htaccess ikke gør hvad jeg gerne vil ha den til at gøre.

Jeg vil ha at: http://localhost/Blog/article/First-article skal være det samme som http://localhost/Blog/entry.php?article=First-article så det bliver en "pænere" url
Avatar billede Slettet bruger
03. maj 2010 - 19:46 #7
Med min kode fra post #3 kom jeg til at få den til at sende informationerne til "ROOT/entry.php" i stedet for "ROOT/Blog/entry.php".
Så prøv og ændrer
mod_rewrite i .htaccess:
RewriteEngine on
RewriteRule ^/Blog/article/(.*)$ entry.php?article=$1

Til følgende:
mod_rewrite i .htaccess:
RewriteEngine on
RewriteRule ^/Blog/article/(.*)$ Blog/entry.php?article=$1

og .htaccess filen skal selvfølgelig ligge i roden.

Håber det fixer dit problem, ellers må du jo vende tilbage :-)
Avatar billede agurken Nybegynder
03. maj 2010 - 22:11 #8
Jeg ved ikke lige hvad der sker, men det virker stadig ikke
Avatar billede Slettet bruger
03. maj 2010 - 22:27 #9
Nu har jeg prøvet at lave en test på min lokale webserver. Har delt den op i 3 filer:
1) index.php - generer en random liste med links
2) .htaccess - styrer mod_rewrite
3) Blog/entry.php - udskriver alt fra $_GET

index.php
<?php
for($i=1; $i<=25; $i++) {
    $format = '<a href="Blog/article/%s">Article #%d</a><br>';
    printf($format, rand(1, 200), $i);
}
?>

.htaccess
RewriteEngine on
RewriteRule ^Blog/article/(.*)$ Blog/entry.php?article=$1

Blog/entry.php
<?php
printf('<pre>%s</pre>', print_r($_GET, true));
?>

Ovenstående kode virker upåklageligt hos mig, så prøv at flet det ind i dine koder og se om det kan hjælpe dig.
Avatar billede agurken Nybegynder
04. maj 2010 - 23:11 #10
Og hvis index og entry begge ligger i mappen 'Blog', skal .htaccess så også ligge deri?
Avatar billede Slettet bruger
05. maj 2010 - 00:05 #11
Du kan ligge din .htaccess hvor du har lyst til, sålænge Apache indstillingerne tillader det, men normalt kan .htaccess ligge i alle de mapper du har lyst til sålænge de ligger inden for webserverens directory.

Hvis du ligger index.php og .htaccess i mappen 'Blog' så skal du selvfølgelig ændre indholdet af de filer så de passer til det sted hvor de ligger.

Det eksempel jeg kom med i #9 er baseret på index.php og .htaccess ligger i roden og entry.php ligger under mappen 'Blog'.
Avatar billede agurken Nybegynder
07. maj 2010 - 21:27 #12
Nu virker det, men CSS filerne holder op med at virke, indholdet i dem bliver lavet om til indholdet i entry.php, hvorfor sker det?
Avatar billede agurken Nybegynder
07. maj 2010 - 22:02 #13
Her er et eksempel: http://imgur.com/5rmkd.jpg
Avatar billede Slettet bruger
10. maj 2010 - 22:21 #14
Dine css filer, billeder osv. vil højest sandsynligt ikke virke hvis du ikke angiver den fulde sti til dem.
Desuden så tager mod_rewrite-koden ikke højde for om nogle af stierne allerede findes, den overskriver simpelthen ALT!
Hvis mod_rewrite skal springe over stier der findes, så skal du lave "conditions" i din mod_rewrite kode.

Eksempel på "conditions" i mod_rewrite:
# Slår Rewrite engine til
RewriteEngine on
# Sætter condition "not directories"
RewriteCond %{REQUEST_FILENAME} !-d
# Sætter condition "not files"
RewriteCond %{REQUEST_FILENAME} !-f
# Sætter rule
RewriteRule...
Avatar billede agurken Nybegynder
10. maj 2010 - 22:47 #15
Jeg ved ikke lige hvad der går galt, men det hjælper heller ikke :/
Avatar billede Slettet bruger
11. maj 2010 - 00:49 #16
Hvordan linker/henviser du til din css fil?
Avatar billede agurken Nybegynder
11. maj 2010 - 14:04 #17
<link rel="stylesheet" href="Style/Style.css" type="text/css" />
<link rel="stylesheet" href="Style/StyleId.css" type="text/css" />
<link rel="stylesheet" href="Style/StyleLink.css" type="text/css" />

Mine 3 css filer.
Avatar billede Slettet bruger
11. maj 2010 - 19:38 #18
Du linker ikke direkte til dem. Prøv at smid en skråstreg først i stien - det angiver roden af din hjemmeside.
Lad os sige strukturen over dine filer og mapper ser således ud:
roden
  - style
    - style.css
    - styleid.css
    - stylelink.css
  - blog
    - entry.php
  - index.php

Hvis du er på adressen http://ditdomain.dk/Blog/article/min-artikel så prøver du på at loade css-filerne fra http://ditdomain.dk/Blog/article/style/style.css osv.
Hvis du derimod sætter en skråstreg ind først i stien på dine css-filer så vil den ALTID kigge efter dine css-filer i mappen http://ditdomain.dk/style

Så prøv og lav dine stier om til dette:
<link rel="stylesheet" href="/Style/Style.css" type="text/css" />
<link rel="stylesheet" href="/Style/StyleId.css" type="text/css" />
<link rel="stylesheet" href="/Style/StyleLink.css" type="text/css" />
Avatar billede agurken Nybegynder
11. maj 2010 - 19:55 #19
Sådan ser strukturen ikke ud, synes jeg har nævnt det før?

Det ser sådan her ud:

roden
- blog
  - index.php
  - entry.php
  - style
  - style.css
  - styleid.css
  - stylelink.css
Avatar billede Slettet bruger
11. maj 2010 - 21:31 #20
Det var et eksempel det jeg kom med.
Det vigtige er at du tilpasser din kode til din struktur.
Avatar billede agurken Nybegynder
12. maj 2010 - 00:01 #21
Ændrede det til /Style/.... Og nu virker det, jeg takker mange gange :) Nu skal jeg bare lige bruge et svar fra dig, så du kan få point :)
Avatar billede Slettet bruger
12. maj 2010 - 02:40 #22
Du får et svar her
Avatar billede agurken Nybegynder
12. maj 2010 - 10:43 #23
Her er dine fuldt fortjente point
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
Kurser inden for grundlæggende programmering

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