Topic: .htaccess ir rewrite engine

darau

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /?a=$1&b=$2&c=$3&d=$4&e=$5 [L] 

bet jei visi neuzsipildo, tada meta 404. Gal kanors patarsit ? ka daryti kad nekreiptu demesio ar uzpildytas ar ne?

2 (edited by Ramex 2009-03-16 10:55:54)

Re: .htaccess ir rewrite engine

na tu pats nurodai griežtą struktūrą. norint to išvengt reiktų kažko panašaus į tai:

RewriteEngine On
RewriteRule ^(([^/]*)/){0,5}$ /?a=$1&b=$2&c=$3&d=$4&e=$5 [L]

nežinau kiek teisingai parašiau, nesu šitos srities asas ir netikrinau. bet jei supratai mano mintį, tai bandydamas turėtum išgaut reikiamą kodą.
taip aš nežinau kaip reaguos į trūkstamus kintamuosius. blogiausiu atveju toks variantas manau tikrai veiks:

RewriteEngine On
RewriteRule ^([^/]*)$ /?a=$1 [L]
RewriteRule ^([^/]*)/([^/]*)$ /?a=$1&b=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /?a=$1&b=$2&c=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /?a=$1&b=$2&c=$3&d=$4 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /?a=$1&b=$2&c=$3&d=$4&e=$5 [L]

mano aprašyti variantai tinka su sąlyga, kad tavasis variantas irgi vekė su visais kintamaisias, nes tikrai neturiu laiko tikrinti. stengiuos tik užvest ant kelio =]

Su sąlyga, kad šūdo nebus...

Re: .htaccess ir rewrite engine

Galiu prie visko pridurti, kad matant tokias stuktūras darosi aišku, kad kuo toliau tuo sunkiau bus rewritinti konkrečias struktūras, todėl anksčiau ar vėliau prieisi prie to, kad rewritinsi viską maždaug taip:

RewriteEngine on
RewriteBase /
RewriteCond    %{REQUEST_FILENAME} !-f
RewriteCond    %{REQUEST_FILENAME} !-d
RewriteRule    ^(.*)$ index.php?url=$1 [L,QSA]

Ir tą gautą url parametrą jau analizuosi su PHP/MySQL.

Re: .htaccess ir rewrite engine

:D o jo...

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: .htaccess ir rewrite engine

Na dėkui padėjusiems, teks daryti taip kaip ankščiau, taip kaip parašė Mindė. Tik kad aš ne $_GET naudodavau, o QUERY_STRING.. Geriau aišku būtų be php parsinimo, bet ka padarysi :)


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Re: .htaccess ir rewrite engine

Gryzes is darbo numesiu padoria mod_rewrite, nes lygiai to paties norejau ir as, galu galiausia pasidariau :)

Re: .htaccess ir rewrite engine

dar negryzai? :D

Re: .htaccess ir rewrite engine

Matai žmonės kaip dirba (-; parom.

9 (edited by Min2liz 2009-03-19 23:53:28)

Re: .htaccess ir rewrite engine

Uzmirsau visai :D Va tuoj eisiu namo tai gryzes (jei neuzmirsiu vel) idesiu

EDIT:

Pamaciau mindes parasyta htaccess, tai speju kad nelabai ir manasis rewrite skirsis :) Tad nieko stebuklingo nepazadu, nes pats nebeatsimenu kaip ten pasirases (:

10 (edited by Min2liz 2009-03-20 13:51:18)

Re: .htaccess ir rewrite engine

Blyn vos vel nepamirsau. Stai:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /simEP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^([0-9A-Za-z-_]+)?(/[0-9A-Za-z-_]+)?(/[0-9A-Za-z-_\/]+)? index.php?lang=$1&page=$2&param=$3 [L]
</IfModule>

Cia truputi persidaryt gali, siu oatveju gali buti:

www.pvz.lt/lt/puslapis/galerija/suniukai/haskis
$_GET['lang'] == 'lt';
$_GET['page'] == 'puslapi';
$_GET['param'] == 'galerija/suniukai/haskis';

EDIT:

Ziuriu tas pats gavos su kitais kur rode, tad nekreipk demesio :)

11

Re: .htaccess ir rewrite engine

na dekui kad stengeisi padeti

12 (edited by fnt 2009-03-21 00:56:49)

Re: .htaccess ir rewrite engine

o jei pas mane bus taip
RewriteEngine on
RewriteBase /
RewriteCond    %{REQUEST_FILENAME} !-f
RewriteCond    %{REQUEST_FILENAME} !-d
RewriteRule    ^index.wml(.*)$ /index.php?n=$1 [L,QSA]
RewriteRule    ^main.wml(.*)$ /main.php?n=$1 [L,QSA]
RewriteRule    ^captcha.wml(.*)$ /captcha.php?auth=$1 [L,QSA]

nieko tokio kad tu rewrite rule daug bus?

Re: .htaccess ir rewrite engine

Ne, nieko tokio.

Re: .htaccess ir rewrite engine

o hebra zekit , as php pasirasiau mazdaug sitaip :

<?php
class URL{
var $page;
var $vars;

    function checkValues()
        {
            if(isset($_GET["page"])&&isset($_GET["var"]))
                {
                    $this -> page = $_GET["page"];
                    $this -> vars = $_GET["var"];
                } elseif(isset($_GET["page"]))
                    {
                        $this -> page = $_GET["page"];
                    } else {
                        echo "ERROR";
                    }
        }
    function URLget()
        {
    switch($this->page)
        {
            case "1":
           
                switch($this->vars)
                    {
                        case "boo": echo "<h2>Puslapis page 1 ir var = BOO</h2><br />";
                        break;
                       
                        case "foo": echo "<h2> puslapis page 1 ir var = FOO</h2><br />";
                        break;
                       
                        default: echo "<h2>Puslapis page 1</h2>";
                        break;
                    }
            break;
            case "2": echo "<h2>Puslapis page 2</h2>";
            break;
           
            case "3": echo "<h2>Puslapis page 3</h2>";
            break;
           
            case "4": echo "<h2>Puslapis page 4</h2>";
            break;
           
            default : echo "<h2>Cia default puslapis</h2>";
            break;
        }
    }
}
$url = new URL();
$url -> checkValues();
$url -> URLget();
?>
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page=1";?>">PAGE 1</a><br />
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page=2";?>">PAGE 2</a><br />
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page=3";?>">PAGE 3</a><br />
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page=4";?>">PAGE 4</a><br />
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page=1&var=boo";?>">PAGE 1 & BOO</a><br />
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page=1&var=foo";?>">PAGE 1 & FOO</a><br />
<a href="<?php echo $_SERVER["PHP_SELF"] . "?page";?>">PAGE</a><br />

o .htaccess parasiau sitaip, bet man nepadaro kataloginio ejimo, kame problema ?

RewriteEngine on
RewriteBase /
RewriteCond    %{REQUEST_FILENAME} !-f
RewriteCond    %{REQUEST_FILENAME} !-d
RewriteRule    ^(.*)$ /test.php?page=$1&var=$2 [L,QSA]

Re: .htaccess ir rewrite engine

nebereik :) viska radau pasidariau nepriekaistingai :)

Re: .htaccess ir rewrite engine

Tai jeigu nesunku parodyk nepriekaištingai veikiantį kodą, kiti irgi pasinaudos (-;

Re: .htaccess ir rewrite engine

drasiai pasakyta :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: .htaccess ir rewrite engine

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f

# Veiksmai
RewriteRule ^loggin/([0-9A-Za-z-_]+)? ./login.php?action=$1 [L,QSA]
RewriteRule ^loggout/([0-9A-Za-z-_]+)? ./index.php?action=$1 [L,QSA]
RewriteRule ^private(/)?$ /login/index.php [L,QSA]

# Migtukai
RewriteRule ^private/information/([0-9A-Za-z-_]+)? ./index.php?info=$1&page=$2 [L,QSA]
RewriteRule ^private/upgrade/([0-9A-Za-z-_]+)? ./index.php?upgrade=$1 [L,QSA]
RewriteRule ^private/administration/([0-9A-Za-z-_]+)? ./index.php?admin=$1 [L,QSA]
RewriteRule ^private/settings/([0-9A-Za-z-_]+)? ./index.php?setup=$1 [L,QSA]

Na pagal mano ideja veikia super :) nuorodos kaip ir matot mazdaug sitaip : <a href="/private/information/">Info</a> veikia katalogais,
o i tikrus katalogus sudejau po index.php faila tuscia, kad nerodytu ftp failu listo. Cia galima dar pasiredaguoti, ir dar reikes redaguotis :)
Man viskas veikia nepriekaistingai :) Tik php reikia pasiprogramuot, siuo metu pas mane super :)

Re: .htaccess ir rewrite engine

aj o del pavyzdziui stiliu naudokit tuomet nuoroda i stiliu arba paprasciausiai kraukit i failus
bet as tai pasidariau sioki toki scenariju nurodyti kelia tarkim sitas :

class Site {
  private $baseurl;
  public function __construct() {
    $this->baseurl = "http://". $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
  }
  public function output() {   
    echo $this->baseurl;
  }
}

$baseURL = new Site();

poto paprasciausiai kaip iterpet stiliu :

<link href="<?php echo $baseURL -> output() ."/styles/css/default.css";?>" rel="stylesheet" type="text/css" media="screen" />

nurodot kelia, ir fantastiskai keliauja stiliai. Nes kai eina katalogais palieka stilius, ir html pasidaro nuogas.

Re: .htaccess ir rewrite engine

o jei per turinio valdyma noresi prideti nauja puslapi? ka tada darysi? :)

sakiau kad drasiai pasakyta :D

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer