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

Předmět Autor Datum
Už jsem dnes asi přetažený, ten zveřejněný .htaccess nevidím.
host 26.10.2010 23:05
host
Já jsem idiot :-D Pardón:-D RewriteEngine on RewriteRule /index\.php?class=clanek=(.*) clanek.php?i…
Pavel K. 26.10.2010 23:07
Pavel K.
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.
htaccess ani robit nic nebude, htaccess upravuje pristup k suborom na disku. Ty na ziadne subory nep…
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…
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.
OMG to si cez htacces preformatovavas pristup na index.php, co to je za nezmysel? Sak si zmen to php…
MM.. 26.10.2010 23:41
MM..
Co presne chces dosiahnut? (co chces zmenit na co a preco?)
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…
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