Avatar billede freeagent Nybegynder
06. juni 2005 - 08:42 Der er 3 kommentarer og
1 løsning

.htaccess <files> omskrivning af URL giver fejl

For at pynte paa en URL der saadan ud:
http://www.somesite.com/index.php?pageid=123&parameter1=234&parameter2=345

Saa den kan se ud som her:
http://www.somesite.com/index/123/234/345

Kan man via PHP $PATH_INFO, assigne raekken af directory navne (123/234/345) til et array:
$path_array = explode("/",$PATH_INFO);

Dette faar dig en del af vejen, URL'en ser nu saaledes ud:
http://www.somesite.com/index.php/123/234/345

For at slippe af med .php skal man saa bruge en .htaccess fil. Og have mod_rewrite paa Apache serveren. Denne .htaccess fil skal have file permissions sat til noget i stil med 777 og indeholde foelgende:
<Files index>
    ForceType application/x-httpd-php
</Files>

Foerst lavede jeg det paa en Windows box. Men nu har jeg skiftet til Mac OS X 10.4, og saa virker det ikke laengere. Det samme er tilfaaeldet med Linux. Koerer Apache 2.0.54 paa Mac og Apache 1.33 paa Linux. Jeg faar samme Apache fejl meddelelse paa begge systemer:
500 Internal Server Error

Har ogsaa proovet med foelgende .htaccess fil:
DirectoryIndex index.php index
<Files index>
forcetype application/x-httpd-php
</Files>
... det resulterede i en 404 File Not Found

Jeg har kikket i Apaches fejl log, og den siger blot af <Files> i .htaccess filen ikke er lukket. Men jeg har lukket med </Files>. Alt burde fungere, det er jo lige efter bogen, men det goer det bare ikke... :-(

Nogen der har en ide ?

(ja, har oprettet spoergsmaalet foer, men kom til at lukke det ved en misforstaaelse. Beklager)
Avatar billede sukos Juniormester
06. juni 2005 - 09:07 #1
Du behøver ikke oprette et nyt spm. om det samme!
Faktisk må man ikke! :O)

For at ændre en specifik get variabel til en specifik fil:
.htaccess som ligger i dirøet test2

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([a-zA-Z0-9/_]+)$ index.php?id=$1
RewriteRule ^([a-zA-Z0-9/_]+)/$ index.php?id=$1


index.php, som ligger i dir'et test2

<html><head><title>Test med htaccess</title></head>
<body>
<a href="/test2/1234">Link 1</a><br>
<a href="/test2/_abc/2345/ups">Link 2</a><br>
<a href="/test2/_abc/2345/hovsa/juhu/">Link 2</a><br>
<a href="/test2/en/var/mere">Link 4</a><br>
<a href="/test2/mere">Link 5</a><br>
<a href="/test2/mere/rtrt1_3/">Link 6</a>

<p>
<?php
if(isset($_GET["id"])) {
echo $_GET["id"];
}
?>

</body></html>


Den tager så også evt. / med som findes i variablen
Så enten skal du så derefter explode("/", $_GET["id"]);
eller definere flere vars med rewrite_rule

Og der skal selvf. være lov til at bruge .htaccess i det dir hvor det ligger.
Avatar billede sukos Juniormester
06. juni 2005 - 10:27 #2
Et eks. kan ses her:

http://www.steffend.dk/ht_test/
Avatar billede freeagent Nybegynder
06. juni 2005 - 12:12 #3
Hej sukos

tak for dit svar. Fint eksempel. Min PHP kode fungerer fint nok. Jeg hiver de forskellige par ametre ud af URL'en med:

$path_array = explode("/",$PATH_INFO);

Det er min .htacces fil der skaber problemerne. JEg har skrevet foelgende i .htaccess filen:
DirectoryIndex index.php
<Files "index">
forcetype application/x-httpd-php
</Files>

men naar jeg for eksempel fyrer foelgende request af:
http://localhost/urltest/index/123/234/345

saa returnerer Apache bare en 404 Not Found
Avatar billede winston-smith Nybegynder
09. juni 2005 - 21:31 #4
Jeg havde samme problem, men skrev følgende ind i min httpd.conf fil:
<Directory "/web/">  # <-- kataloget hvor din side ligger
      AllowOverride all
</Directory>

og dette i min .htaccess:
AcceptPathInfo on

Det fik det til at fungere, men det så ramlede jeg altså ind i de andre problemer jeg beskrev.
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