[PHP] Multiviews

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • 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 ]


Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22: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


Acties:
  • 0 Henk 'm!

  • 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.


Acties:
  • 0 Henk 'm!

Verwijderd

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

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
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

Acties:
  • 0 Henk 'm!

  • 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 ]


Acties:
  • 0 Henk 'm!

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']

Acties:
  • 0 Henk 'm!

  • 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.


Acties:
  • 0 Henk 'm!

  • 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>

Acties:
  • 0 Henk 'm!

  • 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)

Acties:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • 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