[Mod_Rewrite] Fout in RewriteRule

Pagina: 1
Acties:

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Goed,

'k Heb mij nu toch al enige tijd aan't verdiepen in Mod_Rewrite, veel prullen en na heel veel prullen lukt het dan soms eens. Maar nog steeds ben ik niet gekomen waar ik dus wil geraken, nl. een soort mod_rewrite schrijven zoals hier gebruikt word bij Tweakers.net

Nu ben ik al zover gekomen dat dit werkt.

[html]
RewriteEngine On

RewriteRule ^([A-Za-z]+)/([0-9]+)/?$ index.php?p=$1&nid=$2
RewriteRule ^([A-Za-z]+)/?$ index.php?p=$1 [L]
[/html]

Ok wat doet deze tot nu toe. De bedoeling is dat hij eerst kijk naar welke pagina hij moet en dan als het een nieuwspost is dat hij de ID van de nieuwspost overneemt.

Nu wat er dus nog zou moeten bijkomen is dit.

Voorbeeld URL : http://www.mijnsite.be/news/123/titel-van-de-post.html

Nu is dus mijn vraag. Wat moet ik juist bijvoegen bij m'n rewrite rule om dus die 'titel-van-de-post.html" erbij te kunnen zetten. Want ik weet dat die extra tekst er wel voor piet lul staat maar toch wil ik het graag zo hebben.

Want dus deze soort van URL werkt al bij mij
Voorbeeld URL : http://www.mijnsite.be/news/123/

Iemand any advice ?

[ Voor 4% gewijzigd door imp4ct op 22-11-2006 03:00 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Het is handiger om hiervoor path_info in de php pagina te gebruiken. Zoiets:

PHP:
1
2
$pathInfo = isset($_SERVER['PATH_INFO']) ? trim($_SERVER['PATH_INFO'], '/') : '' ;
$pages = $pathInfo ? explode('/', $pathInfo) : array() ;

Dan check je even of de titel-van-de-post (het 3e element?) is ingesteld. Zo nee, dan doe je een 301 redirect naar de URL met de titel erin.

Maar het is handiger om gewoon alle op diezelfde website gegenereerde linkjes gelijk van de titel te voorzien, zodat je alvast de titel in de URL krijgt. En zet een permalink linkje bovenaan de nieuwsposts, zoals op Tweakers.net.

[ Voor 3% gewijzigd door BalusC op 22-11-2006 06:41 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Zie BalusC, wij gebruiken multiviews, geen mod_rewrite ;)

Intentionally left blank


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Ahaaa :).

Mja ik wou het al een tijdje met PHP proberen, op Zend pagina's stond er ook al zo'n script. Maar ik dacht dat PHP trager zou werken ofzo.

Even ge-googled voor die multiviews, denk dat dat makkelijker gaat lukken via PHP, ligt me meer :)
Thanks in ieder geval !

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Nu toch nog een vraagje (toch niets te doen op't werk). Na het strippen van die URL enzo, moet er dan ook niet een "header" ofzo komen om de user dus door te sturen of hoe zit dat ?

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Je wilt een 301 redirect doen?

PHP:
1
2
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/news/12345/Titel-van-nieuws.html");

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Als'k het goed voor heb is de redirect afhankelijk van de "juistheid" van de url.

Bv. als er in de browser een juist URL wordt doorgegeven dan doe je een 301 redirect. Prullen ze bv. met de URL dat je hen doorstuurt naar een 400 ofzo (ken de nummer niet direct vanbuiten) right ?

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je zou toch zeggen dat je hier lang genoeg rondloopt om Waar hoort mijn topic? gelezen te hebben. ;)

Dit topic heeft niks met HTML te maken, en je oorspronkelijke topic zou het best op zijn plaats zijn in Non-Windows Operating Systems of Windows Servers en Server-software. Echter, aangezien het nu de programmeerkant op gaat, zet ik het toch maar in Programming.

WEB>>PRG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Het is toch de bedoeling om "http://www.example.com/news/12345" wil redirecten naar "http://www.example.com/news/12345/Titel-van-nieuws.html"? :) Dus wanneer de titel niet aanwezig is, dan doe je een redirect.

Ik heb bewust een 301 redirect gesuggereerd, omdat URL, waarmee de 301 wordt getriggerd niet wordt geindexeerd door zoekmachines als Google. Het resultaat van de 301 wordt overigens wel gewoon geindexeerd. Een normale request zonder redirect levert een 200 op.

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
-NMe- schreef op woensdag 22 november 2006 @ 13:27:
Je zou toch zeggen dat je hier lang genoeg rondloopt om Waar hoort mijn topic? gelezen te hebben. ;)

Dit topic heeft niks met HTML te maken, en je oorspronkelijke topic zou het best op zijn plaats zijn in Non-Windows Operating Systems of Windows Servers en Server-software. Echter, aangezien het nu de programmeerkant op gaat, zet ik het toch maar in Programming.

WEB>>PRG
Mijn vorige topic over mod_rewrite heb jijzelf in deze sectie geplaatst als ik mij niet vergis. Dus jah, logischerwijs heb ik daar weer een topic hier geplaatst. 't Is nu gewoon dat het van Mod_Rewrite naar een ander onderwerp is overgeschakeld, kan ik weinig aan doen, ga daar heus geen nieuwe topic voor openen.

[ Voor 9% gewijzigd door imp4ct op 22-11-2006 13:39 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
BalusC schreef op woensdag 22 november 2006 @ 13:28:
Het is toch de bedoeling om "http://www.example.com/news/12345" wil redirecten naar "http://www.example.com/news/12345/Titel-van-nieuws.html"? :) Dus wanneer de titel niet aanwezig is, dan doe je een redirect.

Ik heb bewust een 301 redirect gesuggereerd, omdat URL, waarmee de 301 wordt getriggerd niet wordt geindexeerd door zoekmachines als Google. Het resultaat van de 301 wordt overigens wel gewoon geindexeerd. Een normale request zonder redirect levert een 200 op.
Jups als de "Titel-van-nieuws.html" er niet staat moet het erbij worden gezet. Maar als de gebruiker dus een juiste URL gebruikt dan moet er toch ook een redirect gebeuren, maar gebeurd dat dan automatisch, of moet ik dan ook een redirect doen bij een 200 ?

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

imp4ct schreef op woensdag 22 november 2006 @ 13:31:
[...]

Mijn vorige topic over mod_rewrite heb jijzelf in deze sectie geplaatst als ik mij niet vergis. Dus jah, logischerwijs heb ik daar weer een topic hier geplaatst. 't Is nu gewoon dat het van Mod_Rewrite naar een ander onderwerp is overgeschakeld, kan ik weinig aan doen, ga daar heus geen nieuwe topic voor openen.
offtopic:
mod_rewrite-topics hebben nooit in de Devschuur thuisgehoord, ze zijn juist verplaatst van Software Algemeen naar Windows Servers en Server-software. Het lijkt me dus heel sterk dat ik zo'n topic in Webdesign, Markup & Clientside Scripting neergezet zou hebben, aangezien het daar sowieso nooit gehoord heeft. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Als de titel wél aanwezig is, dan hoef je toch geen redirect te doen? :)

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
-NMe- schreef op woensdag 22 november 2006 @ 13:41:
[...]

offtopic:
mod_rewrite-topics hebben nooit in de Devschuur thuisgehoord, ze zijn juist verplaatst van Software Algemeen naar Windows Servers en Server-software. Het lijkt me dus heel sterk dat ik zo'n topic in Webdesign, Markup & Clientside Scripting neergezet zou hebben, aangezien het daar sowieso nooit gehoord heeft. ;)
Kijk hier dan toch maar ff : [HTML] Met mod_rewrite gemaakte urls worden te lang* ;)

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

"neergezet zou hebben" ;) Hij meldt in de movebericht het volgende "Echter is dit geen probleem met mod_rewrite, maar met de manier waarop je je HTML maakt.", dan is WEB wel gerechtigd B)

In dit geval heeft het topic een ommezwaai gemaakt naar PHP, waardoor het alsnog in PRG terecht komt.

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
BalusC schreef op woensdag 22 november 2006 @ 13:41:
Als de titel wél aanwezig is, dan hoef je toch geen redirect te doen? :)
Ik ga straks even wat prullen achter de computer denk dat ik er dan wel zal uitgeraken en het beter snappen.

Want hoe ik "nu" denk dat het werkt is dat je dus de URL stript, gewoon wat controles uitvoert in je PHP en aan de hand daarvan de pagina's include dus dan nodig zijn.

Want ik denk dat ik het nog teveel vergelijk met Mod_Rewrite, waar je dus ingeeft hoe de URL eruit ziet op de site "http://www.example.com/news/12345/test-tekst.html" en hij het dan dat intern verwerkt naar "http://www.example.com/index.php?p=news&nid=12345

En wat ik dus dacht is... in de PHP stript hij dus de URL haalt "news" eruit en "12345" en dat ik dan dus in mijn PHP code een header moest maken die dan dus die gegevens ging gebruiken en dus dat het dan ook zo uitziet als de verwerkings url die in mod_rewrite wordt gebruikt.

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Is mijn redenering eigenlijk juist van hierboven ?
Modbreak:Schopppen binnen 24 uur is ongewenst.

[ Voor 34% gewijzigd door NMe op 23-11-2006 13:54 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Na wat lang zoeken en wikken en wegen. Heb ik een beetje een mix gemaakt. 'k Ben niet voor multiviews gegaan maar een beetje voor een mix, maar het werkt wel perfect.

Zal hier even de code zetten, kan misschien nuttig zijn voor mensen.

Bv. URL : http://www.mijnsite/nieuws/12412/titel-van-het-artikel.html

.htaccess file
code:
1
2
3
4
5
6
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) index.php?url=$1 [L,QSA]


PHP code die je helemaal in't begin van je index.php dient te zetten
PHP:
1
2
3
<?
$url_array = explode('/', $_GET['url']);
?>


In $url_array ga je dan eigenlijk alles opvangen dat er na "http://www.mijnsite/" volgt. nl "nieuws/12412/titel-van-het-artikel.html" en door de explode te doen ga je dit dus in een array uitfilteren en moet je eigenlijk gewoon een switch of what ever gebruiken om controle uit te voeren.

't Is dus een beetje ene mix van beide, idee komt van de "Drupal" website waar ze ook volgens deze techniek werken.

[ Voor 6% gewijzigd door imp4ct op 23-11-2006 21:18 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600

Pagina: 1