Autor Zpráva
michy04
Profil
Dobrý den dělám jednoduché CMS a potřebuji poradit s jedním problémem, mám layout do kterého pomocí PHP includuji obsah z DB, ty stránky se includují nějak takto:
<?php
				$page = $_GET['page'];
				if(!isset($page))
				{
					$page = "home";
				}
					
					switch($page)
					{
						case 'home': $page = "home"; break;
						case 'articles': $page = "articles"; break;
						case 'links': $page = "links"; break;
						case 'aboutme': $page = "aboutme"; break;
						case 'viewarticle': $page = "viewarticle"; break;
					}
					
					if(file_exists("pages/".$page."/index.php"))
					{
						require("pages/".$page."/index.php");
					}
					else
						echo '<span style="color:Red; text-decoration:underline; font-size:2em; font-family:arial;">Stránka nebyla nalezena</span>';
				?>


No a mám články jejichž ID ziskavám z DB a nasledně jejich id predam jako parametr a zobrazím článek s tím parametrem, problém je v tom, že to dělám přes mod_rewrite a nějak mi nefunguje to předání, ten přepis mam takto(chci to přepsat z .../index.php?page=viewarticle&id=<z DB> na .../article/<id z DB-název článku z DB>, tedy např.: ".../article/1-prvni-clanek-na-blogu")

Tady je ten Regex:

RewriteRule ^article/([0-9]+).*$ %{DOCUMENT_ROOT}/index.php?page=viewarticle&id=$1


Ale nějak se mi tam nepředá to URL, prostě mi to napíše stránka nenalezena, myslim si, že je asi špatně ten regex, nevíte kde je ta chyba? už se s tim rvu asi 4 hodiny, díky za odpovědi...
blahapet
Profil
Teď nevím, jestli jsem to dobře pochopil a hlavně to i dobře napíšu:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^article/([^/]+)-prvni-clanek-na-blogu$ ?page=viewarticle&id=$1


Teoreticky by si měl z obou níže uvedených cest, dostat se stejného výsledku:

www.neco.cz/article/1-prvni-clanek-na-blogu

www.neco.cz/index.php?page=viewarticle&id=1

Za případné cyby se omlouvám...
michy04
Profil
blahapet
Díky za odpověď, bohužel mi to stále píše, že stránka nebyla nalezena :-(
Zkusim si ještě trochu pohrát s tim regexem a pokud to nepujde, dám tam zpátky normální URL...
Kajman_
Profil *
Zkusil bych nepoužívat v pravidle %{DOCUMENT_ROOT}/

A také můžete zkusit, jestli rewrite vůbec máte zapnuté.
michy04
Profil
Kajman:
Díky za tip, hned to jdu zkusit, rewrite mám na 100% zapnuté, jelikož například http://mojestranka.cz/home mi funguje a přesměruje se na http://mojestranka.cz/?page=home
michy04
Profil
Abych to ještě upřesnil, když to dělam bez URL Rewritingu, tak to funguje, ale s URL Rewritingem ne, takže chyba je tam.
Jde mi konkrétně přesně o toto:
Z tohoto URL:
http://stranka.cz/article/1-nazev-clanku-z-databaze-ktery-se-dynamicky-generuje
na
http://stranka.cz/?page=viewarticle?id=1
To id se take generuje z db(AUTO_INCREMENT)

takže v podstatě chci s tohoto url
http://stranka.cz/article/1-nazev-clanku-z-databaze-ktery-se-dynamicky-generuje

Dostat pouze to id a dosadit ho sem
http://stranka.cz/?page=viewarticle?id=1

Ten název článku je jen v url pro upřesnění a lepší SEO, ale ten vědět nepotřebuju pro chod, de jen o to ID.
michy04
Profil
Díky všem, už jsem to vyřešil, problém byl v předchozím řádku, resp. v jiném pravidel(konkretne v tomto):
RewriteRule ^(.*)$ ?page=$1

To měla za úkol přepisovat např.
mojestranka.cz/home na mojestranka.cz?page=home

A přepisovalo to i ten article, no prostě to nešlo :-)
Ještě jednou díky
Mesiah
Profil
Ahoj, prosím Tě, mohl by jsi napsat jak jsi to vyřešil? Přesněji, jak jsi "omezil" předchozí pravidlo "RewriteRule ^(.*)$ ?page=$1" ??

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0