Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Problém s .htaccess

Dobrý den,
mám menší problémy s .htaccess. Dělám si teď stránky a chtěl bych si tam vytvořit menší redakční systém. Problém je, že stránky dělám dynamicky a proto nutně potřebuji, aby cesta k článkům začínala index.php?class=neco. Problém je, že mi níže zveřejněný .htaccess nefunguje. Předpokládám, že je to primitivní chyba, ale Rewrite vůbec nerozumím, proto se musím obracet na vás.
Nevěděl by někdo prosím, v čem je problém?
Předem všem moc děkuji

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Htaccess nema nic spolocne s index.php?class=neco, to je snad len variable pre PHP script. Htaccess… nový
MM.. 26.10.2010 23:08
MM..
Problém je ten, že to nerobí právě nic. Mám php soubor, který tahá z DB "novinky" články. A soubor .… nový
Pavel K. 26.10.2010 23:13
Pavel K.
htaccess ani robit nic nebude, htaccess upravuje pristup k suborom na disku. Ty na ziadne subory nep… nový
MM.. 26.10.2010 23:23
MM..
Co sa tyka tvojho php kodu tak v URL musis napisat index.php?id_clanku=neco;url_clanku=neco resp. ur… nový
MM.. 26.10.2010 23:26
MM..
Přestávám tomu rozumět, proč tedy, když místo RewriteRule /index\.php?class=clanek=(.*) clanek.php?… nový
Pavel K. 26.10.2010 23:32
Pavel K.
OMG to si cez htacces preformatovavas pristup na index.php, co to je za nezmysel? Sak si zmen to php… nový
MM.. 26.10.2010 23:41
MM..
Co presne chces dosiahnut? (co chces zmenit na co a preco?) nový
MM.. 26.10.2010 23:58
MM..
Este som ti na to pozrel cez google, ked ta spravne chapem chces zmenit index.php?class=clanek=123 n… nový
MM.. 27.10.2010 00:32
MM..
Úvodní informace o RewriteCond a RewriteRule také např. zde : mod-rewrite.html Ale ještě trošku ne… poslední
hynajs 27.10.2010 10:19
hynajs

Htaccess nema nic spolocne s index.php?class=neco, to je snad len variable pre PHP script. Htaccess upravuje pristup k suborom. Jaky mas konkretne problem (co to robi resp. nerobi, jaku chybu to hlasi, a kde mas subory tych clankov a preco ich mas kdesi v inej zlozke a nie v databaze?). Z jakeho dovodu mas potrebu robit nieco s htaccess?

Problém je ten, že to nerobí právě nic. Mám php soubor, který tahá z DB "novinky" články. A soubor .htaccess mám uložen ve složce root stejně jako níže zveřejněný kód

<?php
  require "config.php"; 
  
  $sqm = "SELECT * FROM `novinky` WHERE `id`='" . mysql_real_escape_string($_GET['id_clanku'])  . "'";
  $sql = "SELECT * FROM `novinky` WHERE `url`='" . mysql_real_escape_string($_GET['url_clanku'])  . "'";
  $sql_query = mysql_query($sql) and mysql_query($sqm) or die (mysql_error());
  
  $num_rows = mysql_num_rows($sql_query);

  if( $num_rows == 1 ){
    $data = mysql_fetch_array($sql_query);
    echo '<div id="body-vypraveni-velke">';
    echo '<h2>'.$data['nazev'].'</h2></div>';
    echo '&nbsp;&nbsp;&nbsp;' . $data['text'];
  }else{
    echo 'Článek nelze nalézt';
  }
?>        

OMG to si cez htacces preformatovavas pristup na index.php, co to je za nezmysel? Sak si zmen to php, a nerob nic s htaccess, zrus to RewriteRule uplne, nepotrebujes to.

P.S. pochop princip ze cez htaccess si mozes zmenit subor an nieco ine, t.j. ak niekto bude chciet pristupovat na tvoj server na subor /neco.txt (a ten subor vobec na serveri neexistuje) tak to zmenis na /necoine.php?neco=necoine. To sa da (to je ten druhy pripad).

Ale nemozes tym formatovat parametre ked pristupujes na stejny subor (.php), to je uplney nezmysel. Zmen to PHP ked chces ine parametre.

Este som ti na to pozrel cez google, ked ta spravne chapem chces zmenit
index.php?class=clanek=123 na clanek.php?id_clanku=123 ?
V tom pripade kedze chces scanovat aj premennu tak asi bude treba pouzit RewriteCond ptz tusim ze RewriteRule scanuje len URL a nie premenne (v tvojom pripade URL je len index.php, zbytok su premenne). Ale toto RewriteCond uz nedrzim v hlave ptz to je uz podla mna sialenstvo, inac studovat mozes napr. tu htaccess2.php pekna stranka.

Malo by fungovat nieco take (nezarucujem netestoval som to)

RewriteCond %{QUERY_STRING} class=(.*)
RewriteRule ^index\.php$ clanek.php?id_clanku=$1 [L]

pripadne vyhod to ^ zo zaciatku a $ z konca, ked chces scanovat len ten konkretny string a nic viac k nemu. Ked chces pridat na koniec aj pripadne dalsie premenne tak do parametrov pridas tusim QSA, t.j. [L,QSA]

Vychadzal som z prikladu na tom webe, konkretne

capturing a $_GET variable:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{QUERY_STRING} foo=(.*)
RewriteRule ^grab(.*) /page.php?bar=%1

would translate a link/user's request for..
grab
server-side, into..
page.php

Úvodní informace o RewriteCond a RewriteRule také např. zde :

mod-rewrite.html

Ale ještě trošku nerozumím spojení dvou dotazů ve zdrojovém kódu ( potažmo tabulce novinky):

$sqm = "SELECT * FROM `novinky` WHERE `id`='" . mysql_real_escape_string($_GET['id_clanku'])  . "'";
$sql = "SELECT * FROM `novinky` WHERE `url`='" .mysql_real_escape_string($_GET['url_clanku'])  . "'";

$sql_query = mysql_query($sql) and mysql_query($sqm) or die (mysql_error());

Článek by asi měl být jednoznačně určen svým id ( nebo teda url, což by se mi osobně nelíbilo ) . Pak je předávání obou pomocí GET zbytečné. A ovšem také jeden z dotazů.
Anebo je možné přiřadit libovolnému id libovolné URL ? To si neumím představit.

Podobnou věc jsem ještě nedělal a také nedovedu teď z fleku navrhnout řešení bez .htaccess. Což by mě zajímalo.

Zpět do poradny Odpovědět na původní otázku Nahoru