webForumDet fria alternativet

mod_rewrite funkar ej

Webbutveckling

5 svar · 542 visningar · startad av bohlin

Medlem sedan mars 2000263 inlägg
Frågan#1

Jag håller på och testar mod_rewrite, men får det ej att fungera.
Så här ser .htaccess ut
RewriteEngine on

RewriteBase /
RewriteRule ^movies.html$ m.php [L]
RewriteRule ^movie/([0-9]+)?$ m.php?id=$id [L]

första regeln funkar, om man skriver domän.se/movies.html så visas m.php
Men om man skriver domän/movie/1 så kommer man inte till m.php?id=1, utan en tom vit visas, och det är inte m.php som visas. Tyvärr har jag inte tillgång till apaches errorlog (filerna ligger hos loopia).

Har jag gjort något galet i den andra regeln, eller borde det fungera?

MVH Johan

Medlem sedan juni 20031 837 inlägg
#2

Inkluderar du några filer i m.php?
kolla så att sökvägarna blir rätt även efter mod_rewrite.
mycket möjligt att php tror att m.php ligger i movie-katalogen.
skapa en ny php-fil som bara skriver ut $id utan att inkludera andra filer så kan du se om det fungerar.

Medlem sedan mars 2000263 inlägg
#3

såhär ser m.php ut:
<?php

print("Detta är m.php");

?>

http://www.domän.se/m.php ger "Detta är m.php"
Medans domän.se/movie/1 ger en blank sida. Det är som om php-sidan inte körs alls.

Medlem sedan juni 20014 421 inlägg
#4

RewriteRule ^movie/([0-9]+) m.php?id=$1 [L]

Medlem sedan mars 2000263 inlägg
#5

m.php:
<?php

print("Detta är m.php");

if (isset($_GET["id"]))
print("<br>Id är " . $_GET["id"]);
?>

Nu ser .htaccess ut såhär:
RewriteEngine on

RewriteBase /
RewriteRule ^movie/([0-9]+) m.php?id=$1 [L]
RewriteRule ^movie([0-9]+) m.php?id=$1 [L]
RewriteRule ^movies.html$ m.php [L]

www.domän.se/movies.html funkar. m.php visas korrekt (regel 3)
www.domän.se/movie123 funkar, m.php?id=123 körs (regel 2)
www.domän.se/movie/123 funkar INTE. en tom sida visas. m.php körs inte (regel 1)

Regeln ser väl rätt ut?

Medlem sedan juni 20014 421 inlägg
#6

Nej, jag som tappade bort mig lite..du måste ha med ett rewritecond när filen/directoryn i fråga inte existerar.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^movie/?([0-9]+?)$ m.php?id=$1 [L]
RewriteRule ^movies.html$ m.php [L]

Regeln RewriteRule ^movie/?([0-9]+?)$ m.php?id=$1 [L] gör så att du inte behöver skilja mellan movies123 och movies/123, då första frågetecknet gör slashen optional.

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)