ugrás a tartalomhoz

Csúnya webcímek szépítése mod_rewrite használatával

balatonl · 2004. Ápr. 15. (Cs), 03.08
Sziasztok!

Jelenleg dolgozom egy adatbázis hátterű oldalon, és mint az ilyenkor lenni szokott, baromi hosszú URL-ek jönnek létre, pl:

http://localhost/index2.php?option=articles&id=15

Ezt szeretném leegyszerűsíteni a következő formára:

http://localhost/articles/15

Számos helyen olvastam erről, meg is próbáltam csinálni a .htaccess fájl segítségével:

Options ExecCGI FollowSymLinks Includes MultiViews
RewriteEngine On
RewriteRule ^/articles/([0-9]+)$ /index2.php?option=articles&id=$1

Azonban kapok egy 404-es üzenetet, miszerint az oldal nem található. Az Apache error.log ezt mondja:

[Thu Apr 15 02:40:59 2004] [error] [client 127.0.0.1] File does not exist: d:/web/csillagaszattortenet.csillagaszat.hu/articles/15

(Ez a d:/web/csillagaszattortenet.csillagaszat.hu most a webrootom.)

Tehát valami oknál fogva nem hajtja végre a RewriteRule szabályt. Van valakinek ötlete, mit szúrtam el? Esetleg az Apache confignál kéne valamit jobban megnéznem?

Az érdekes egyébként, hogy ha a .htaccess fájlban elhelyezek egy

ErrorDocument 404 /error404.php

sort, az működik (tehát 404-es hiba esetén egy saját oldal tartalmát írja ki). Úgy tűnik tehát, a configolással nincs gond. Bár Apache terén még van mit fejlődnöm, így aztán ez sincs kizárva.

A javaslatokat, segítséget előre is köszi!

Laci
 
1

A RewriteRule ^/articles hely

c · 2004. Ápr. 15. (Cs), 17.05
A RewriteRule ^/articles helyett RewriteRule ^articles kell (a per jel utáni részt vizsgálja a mod_rew).
2

NE .htccess!

Anonymous · 2004. Ápr. 15. (Cs), 17.09
Ne használj .htaccess-t! Ja, akkor alapból nem fogja támogatni a / jelet, de nem mindegy neked, hogy az URL az index2.php/articles/15 vagy index2.php?articles.15 Az is egyszerű, és így kell csinálni:
<?php
function readParameters(str) {
$params = explode(".",$str);
$option = $params[0];
$id = $params[1];
}
readParameters($QUERY_SRTING);
?>

vagy, még menőbben, ha aznnyira 1*űsítessz, hogy ennyi legyen: index2.php, persze linkelni akkori is így kell a cikkeket: index2.php?articles.15, akkor csináld így:
<?php
function readParameters(str) {
$params = explode(".",$str);
$option = $params[0];
$id = $params[1];
}
session_start();
if(isset($QUERY_STRING)||$QUERY_STRING=="") {
 $called_with = $QUERY_STRING;
 session_register();
 header("Location: $PHP_SELF");
 }
else readParameters($called_with);
?>
3

Re: NE .htccess!

Bártházi András · 2004. Ápr. 15. (Cs), 17.40
Miért ne használjon? A per-es megoldást a keresők és személy szerint én is (és szerintem a célközönség is) sokkal jobban szeretik.

-boogie-
4

Re: NE .htccess!

c · 2004. Ápr. 16. (P), 16.40
"NE .htccess!" - hát ez tényleg egyszerűbb lett :)