Avatar billede sennor Nybegynder
31. marts 2010 - 00:07 Der er 10 kommentarer

Clean Url .htacces

Jeg har været igennem flere tutorials på nettet. Og har ikke fået noget til at virke ordenligt. Jeg vil gerne have http://www.domæne.dk/eksempel.php til http://www.domæne.dk/eksempel . altså fjerne .php på alle mine URLs. I øvrigt hvis jeg gør det skal jeg så ændre alle mine links i mit php dokument fra http://www.domæne.dk/eksempel.php til http://www.domæne.dk/eksempel i mit php dokument ? ps: Apache server, Håber du kan hjælpe mig :)
Avatar billede showsource Seniormester
02. april 2010 - 12:10 #1
Øh, du mener vel ikke at du vil bruge x antal php filer ?

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9]+)(/)?$ /index.php?id=$1
Avatar billede sennor Nybegynder
02. april 2010 - 13:01 #2
Tak for din respons

Alle mine filer er php
men nu lander http://www.domæne.dk/index når jeg skriver http://www.domæne.dk/daseferwwetwet eller andet. Det eneste jeg vil, er at fjerne endelsen .php i browseren. 

så når jeg skriver
http://www.domæne.dk/eksempel1 lander jeg på http://www.domæne.dk/eksempel1.php, der skal ikke vises .php endelsen nogen steder i browseren.

Jeg vil have mine URLs nøjagtig ligesom hjemmesiden http://www.demib.dk/
Avatar billede showsource Seniormester
02. april 2010 - 13:11 #3
Det er jeg ikke lige klar over hvordan man gør.

Men hvis du bruger mit ex. kan du jo include en fil ud fra request.
Avatar billede sennor Nybegynder
02. april 2010 - 13:18 #4
Mine færdigheder i php er ikke store.

Hvordan gør jeg, skal jeg ændre mine links ?

<li id="forside_navi"><a href="../index.php"><strong>Forside</strong></a></li>
Avatar billede showsource Seniormester
02. april 2010 - 13:56 #5
Hvis nu vi siger du bruger denne i en .htaccess

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z]+)(/)?$ /index.php?id=$1

Bemærk, ingen tal !

Så laver du dine links som:

<a href="/">Forsiden</a>
<a href="/kontakt">Kontakt</a>

Det samme gør du når du skal vise billeder, linke til stylesheets m.m.

<link rel="stylesheet" type="text/css" href="/style.css">
<script type="text/javascript" src="/script.js"></script>
<img src="/images/billede.jpg">


I din index.php tjekker du om $_GET["id"] er sat.

F.eks.

<?php

define("MYROOT", $_SERVER["DOCUMENT_ROOT"]);
define("INCDIR", MYROOT."/phpfiler/");

if(isset($_GET["id"])) {

$file = INCDIR.$_GET["id"].".php";

    if(is_file($file)) {
    include($file);
    }else{
    include("404.php");
    }

}else{

include(INCDIR".forside.php");

}

?>

Håber du er lidt med ?
Avatar billede sennor Nybegynder
02. april 2010 - 16:38 #6
Jeg er kommet op med denne htacces fil :
Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^domæne.dk
RewriteRule (.*) http://www.domæne.dk/$1 [R=301,L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)domæne.dk/.*$ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domæne.dk/$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php


nu kan jeg skrive http://www.domæne.dk/kontakt og jeg får vist siden http://www.domæne.dk/kontakt.php.

Det eneste problem nu er at der ingen css er på http://www.domæne.dk/kontakt
mens det vises på http://www.domæne.dk/kontakt.php

Håber du kan hjælpe
Avatar billede showsource Seniormester
03. april 2010 - 07:43 #7
Nok fordi du IKKE starter sti til css med / som jeg skrev i #5
Avatar billede sennor Nybegynder
03. april 2010 - 10:53 #8
Jeg har flyttet det der var i min index.php til forside.php
og sat denne kode ind i index.php
:

<?php

define("MYROOT", $_SERVER["DOCUMENT_ROOT"]);
define("INCDIR", MYROOT."/phpfiler/");

if(isset($_GET["id"])) {

$file = INCDIR.$_GET["id"].".php";

    if(is_file($file)) {
    include($file);
    }else{
    include("404.php");
    }

}else{

include(INCDIR".forside.php");

}

og min .htaccess:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z]+)(/)?$ /index.php?id=$1

og jeg får denne error i browseren. 
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
on line 18.

Hvad skal jeg gøre?
Avatar billede showsource Seniormester
03. april 2010 - 10:57 #9
linien:
include(INCDIR".forside.php");
skal være
include(INCDIR."forside.php");

Men du får da "sprunget" lidt rundt :O) ?
Avatar billede showsource Seniormester
03. april 2010 - 10:59 #10
I de filer som du includer, kan du som det første bruge:

<?php

if(!defined("INCDIR")) {
exit;
}

// resten af php koden

?>
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