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…
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 .…
Pavel K. 26.10.2010 23:13
Pavel K.
Co sa tyka tvojho php kodu tak v URL musis napisat index.php?id_clanku=neco;url_clanku=neco resp. ur…
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?…
Pavel K. 26.10.2010 23:32
Pavel K.
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';
  }
?>        

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