[PHP] Multiviews

Pagina: 1
Acties:
  • 192 views sinds 30-01-2008
  • Reageer

Onderwerpen


  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Ik wil gebruik gaan maken van multiview om SEO vriendelijke URL's te maken. Multiview staat aan op mijn hostingpakket.

Ik gebruik hiervoor het volgende script:

PHP:
1
2
3
4
<?php 
$var = explode('/' , $_SERVER['REQUEST_URI']); 
$menu_id = $var['5']; 
?> 


De oorspronkelijke url is: http://www.mijndomein.nl/nl/page.php?menu_id=16
ik wil dus dat de pagina ook te breiken is onder: http://www.mijndomein.nl/nl/page/menu_id/16
De variabele menu_id gebruik ik weer in mijn query's.

De output van mijn array is het volgende:
<code><pre>Array ( [0] => [1] => nl [2] => page.php [3] => menu_id [4] => 16 ) </code></pre>

Alleen krijg ik steeds een 404 error.
Weet iemand wat ik verkeerd doe?

[ Voor 8% gewijzigd door Matthijs1982 op 31-10-2006 22:12 ]


  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 20-10 21:46

KompjoeFriek

Statsidioot

In plaats van $_SERVER['REQUEST_URI'] om je menu_id kun je denk ik beter $_GET[] gebruiken.

In jou voorbeeld (www.mijndomein.nl/nl/page/menu_id/16) roep je het script www.mijndomein.nl/nl.php aan met de waardes "page" "menu_id" en "16" wat ongeveer overeenkomt met:
www.mijndomein.nl/nl.php?1=page&2=menu_id&3=16

WhatPulse! - Rosetta@Home - Docking@Home


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Staat multiviews wel aan? Zet het anders handmatig aan door middel van een .htaccess file:
code:
1
Options +MultiViews

Je moet dan wel genoeg rechten hebben om dat te kunnen, controleer (indien mogelijk) de Apache instelling AllowOverride daarvoor.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Dat je een 404 krijgt betekent dat er iets niet goed werkt met je Multiviews, de PHP is dan voorlopig niet relevant.

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 22-10 20:20
Heb je met htacces ook je multieviews aangezet?

ApacheConf:
1
Options MultiViews


Doe je dit niet krijg je iid een 404. Of je gebruikt het bestand waar je in werkt niet de url.

Bijvoorbeeld:
index.php word:
http://www.domein.ext/index/page/iets/nummer/nogiets
view.php word:
http://www.domein.ext/view/page/iets/nummer/nogiets

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Wanneer ik gewoon www.mijndomein.nl/nl/page intyp krijg ik de pagina te zien en geen 404. Multiviews werkt dus wel.

@Kompjoefriek:
Wanneer ik $_GET gebruik krijg ik een lege array, of doe ik iets verkeerd? 8)7
PHP:
1
2
3
$var = explode('/' , $_GET['REQUEST_URI']);
$menu_id = $var['4'];
?>

[ Voor 45% gewijzigd door Matthijs1982 op 31-10-2006 22:32 ]


Verwijderd

Matthijs1982 schreef op dinsdag 31 oktober 2006 @ 22:27:
Wanneer ik gewoon www.mijndomein.nl/nl/page intyp krijg ik de pagina te zien en geen 404. Multiviews werkt dus wel.

@Kompjoefriek:
Wanneer ik $_GET gebruik krijg ik een lege array, of doe ik iets verkeerd? 8)7
PHP:
1
2
3
$var = explode('/' , $_GET['REQUEST_URI']);
$menu_id = $var['4'];
?>
Nee $_GET werkt zo niet :)

Ik gebruik altijd:

PHP:
1
explode('/', $_SERVER['PATH_INFO']

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

* AtleX gooit hier nogmaals z'n MultiViews functie neer.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function multiviews($param)
   {
      $param = split('/', $param);
      $queryvars = array();
                
      for ($i=0;$i < count($param);$i++)
    {
       if (!$param[$i] == '')
        {
           $queryvars[] = $param[$i];
        }
    }
      return $queryvars;
   }


Als parameter geef je $_SERVER['PATH_INFO'] mee, dus:
PHP:
1
$multiviews = mulitviews($_SERVER['PATH_INFO']);

[ Voor 13% gewijzigd door AtleX op 31-10-2006 22:41 ]

Sole survivor of the Chicxulub asteroid impact.


  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Ik krijg nu de pagina page.php te zien, alleen wordt de variabele menu_id niet gevuld.
De variabele menu_id wordt alleen nog maar gebruikt in een query.

Ik heb nu dit
$var = explode('/', $_SERVER['PATH_INFO']);
$menu_id = $var['3'];

Als output van de array krijg ik dit:
<code><pre>Array ( [0] => [1] => menu_id [2] => 16 ) </code></pre>

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Matthijs1982 schreef op dinsdag 31 oktober 2006 @ 22:50:
Ik krijg nu de pagina page.php te zien, alleen wordt de variabele menu_id niet gevuld.
De variabele menu_id wordt alleen nog maar gebruikt in een query.

Ik heb nu dit
$var = explode('/', $_SERVER['PATH_INFO']);
$menu_id = $var['3'];

Als output van de array krijg ik dit:
<code><pre>Array ( [0] => [1] => menu_id [2] => 16 ) </code></pre>
dan zie je toch dat de value die je wilt hebben niet op positie 3 zit maar op 2 binnen die array? (daarnaast moet je daar geen quotes gebruiken)

  • ID-College
  • Registratie: November 2003
  • Laatst online: 17:16
Idd, je moet 2 hebben. En een int heeft geen haakjes nodig, alleen een string :)

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Nu werkt het.
Ik moest inderdaad de var op 2 zetten.

Hartstikke bedankt allemaal!
Pagina: 1