Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

.htaccess Redirect werkt niet na behoren

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Om hoofdpijn van te krijgen, al een uurtje bezig en dan zakt de moed in je schoenen. Hup, op naar Tweakers. Komt ie:

Wat ik wil is:

http://www.domein.co/berichten/83/0

Wat werkt wel:
/berichten laad netjes berichten.php

Eigenlijk dient alles achter /berichten/ in een soort van $REQUEST[''] te komen.
Zodra iets achter /berichten/83/0 ingevuld komt er een 500 Internal.
De /83/0 wordt niet goed verwerkt.

code:
1
2
3
4
5
6
7
8
9
Options +SymLinkIfOwnerMatch
RewriteEngine On
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME}.php -f

RewriteRule ^(.*)$ $1.php

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Wat doe je precies? Zo te zien verwijs je /berichten/83/0 naar /berichten/83/0.php. Nogal wiedes dat dat niet werkt. Probeer eens te matchen op slashes, zoiets als
code:
1
RewriteRule ^/([A-Za-z]*)/([0-9]*)/([0-9]*)$ $1.php?id=$2&tweedeargument=$3

When life gives you lemons, start a battery factory


  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 11:57
Wat ze vaak doen (en wat misschien makkelijker is) is alles naar index.php redirecten en vanuit index.php bepalen wat je wil doen met de request.
code:
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

En dan kan je bijvoorbeeld al je elementen in een array zetten.
PHP:
1
2
$reqUrl = trim($_SERVER['REQUEST_URI'], '/');
$pathElements = explode('/', $reqUrl);

Misschien makkelijker als je niet thuis bent in htaccess

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
$_SERVER['PATH_INFO']

Je kan dan doen: /berichten.php/83/0

en: /berichten/83/0
met: RewriteRule ^/([A-Za-z]+)(/.*)?$ $1.php$2

Maak je niet druk, dat doet de compressor maar


  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Zelf gebruik ik multiviews voor pretty-urls (al is het maar voor 1 bestand overigens).
.htaccess
code:
1
2
3
4
Options +Indexes +FollowSymLinks +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


berichten.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function assign_get_vars()
{
    $args = func_get_args();
    $path_info = $_SERVER['PATH_INFO'];
    $p = explode("/", substr($path_info,1) );

    // assign the vars
    $total = count($args);
    for($i=0; $i < $total; $i++)
    {
        $name = $args[$i];
        $_GET[$name] = $p[$i];
        $_REQUEST[$name] = $p[$i];
    }
}

assign_get_vars('cat','id','title');

/berichten/1/38/blahblah.html

$cat = 1
$id = 38
$title = blahblah.html

Voor mij een stuk overizchtelijker, regular expressions heb je hiervoor niet nodig, die ken ik verders dan ook niet.

Ey!! Macarena \o/


Verwijderd

Topicstarter
We komen al een stukje dichterbij, dank daarvoor.

De code nu, met toepassing van de function assign_get_vars, werkt. Dank je Raz.

Alleen nog 1 probleempje. De url dient nu http://domein.co/berichten.php/0/83/test te zijn. Hoe kan de .php er tussenuit worden geschreven met .htaccess?

code:
1
2
3
4
5
Options +SymLinksIfOwnerMatch +MultiViews
RewriteEngine On

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

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Gebruik die .htaccess die ik neerzette ook eens dan. Bij mij werkt het namelijk.

Ey!! Macarena \o/


Verwijderd

Topicstarter
Dat heb ik ook gedaan, maar bij mij weigert hij. Hij laat de bestanden alleen in met de .php extensie in de url-balk.

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Mis je nu niet een rewrite rule, die /berichten/ omzet naar /berichten.php/ ?

After all, we are nothing more or less than what we choose to reveal.


Verwijderd

Topicstarter
Die ben ik nog steeds aan het zoeken, heb er al vele geprobeerd, maar de truck is om alles achter berichten/ te rewriten. Dus berichten/0/83/1/2/3/ etc...

Verwijderd

Topicstarter
Eindelijk!!!

Dit is hem geworden:

code:
1
2
3
4
5
6
RewriteEngine On

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

RewriteRule ^([^/]+)(/.*)?$ $1.php/$2

Verwijderd

code:
1
FallbackResource /index.php

Stop met misbruiken van mod_rewrite!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Verwijderd schreef op zaterdag 30 november 2013 @ 15:07:
code:
1
FallbackResource /index.php

Stop met misbruiken van mod_rewrite!
FallbackResource is Apache >= 2.2.16
code:
1
2
3
4
5
6
7
8
9
10
11
12
<IfModule mod_version.c>
    <IfVersion >= 2.2.16>
        <IfModule mod_dir.c>
            FallbackResource /index.php
        </IfModule>
    </IfVersion>
    <IfVersion < 2.2.16>
        <IfModule mod_rewrite.c>
            ......
        </IfModule>
    </IfVersion>
</IfModule>

Maak je niet druk, dat doet de compressor maar

Pagina: 1