• Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Ik heb momenteel webpagina's met .html extensie, waarin php code wordt gebruikt. Middels de 'php virtual' functie wordt een stukje .cgi code in de html pagina geplaatst.

Mijn nieuwe host ondersteunt de 'php virtual' functie helaas niet, en aangezien ik met een gewone 'php include' mijn .cgi scriptje niet kan aanroepen, moest ik iets anders bedenken.

Ik kan het cgi-scriptje wel includen als ik de pagina's hernoem naar .shtml (via <!--#include virtual="..."--> ). Probleem daarbij is, dat mijn file extensions veranderen en dat is niet goed voor zoekmachines.

Dus ik wil graag het doen voorkomen voor zowel bezoekers als zoekmachines dat de .shtml bestanden eigenlijk .html bestanden zijn. Dat wil ik doen dmv een mod-rewrite. Ik heb alleen geen idee hoe.

Via Google kwam ik de volgende varianten tegen, die echter allemaal niet werken:

code:
1
2
3
4
RewriteEngine on
RewriteBase path
RewriteCond %{QUERY_STRING} ^(.+&)?network=([^&]+)(?:&(.*))?$
RewriteRule ([^.]+)\.html $1-%2.shtml?%1%3

code:
1
RewriteRule ^/?([a-z/]+)\.html$ $1.shtml [L]

code:
1
2
3
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.html $1.shtml [L]

code:
1
2
3
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.html$ $1.shtml [L]

code:
1
RewriteRule ^(.*).html $1.shtml



1) Kan iemand me de juiste mod-rewrite code vertellen of aangeven wat ik fout doe?
2) Als iemand een beter idee heeft om dit probleem op te lossen, dan hoor ik het ook graag!

Alvast bedankt :)

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Voor degene die na mij komt: het had het volgende moeten zijn

code:
1
2
3
4
#Options +FollowSymlinks
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-s
RewriteRule ^(.*)\.html(.*) $1.shtml$2

Verwijderd

Millennyum schreef op woensdag 27 februari 2008 @ 09:27:
Voor degene die na mij komt: het had het volgende moeten zijn
...
Weet je misschien ook waarom het het volgende had moeten zijn? Je #Options heb ik niet eerder vernoemt zien staan, je querystring word slecht meegestuurd en je mist een end of string terminator.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 08:44
Dat je include-virtual alleen in shtml bestanden kunt gebruiken is geen feature van die extensie, maar een instelling in je webserver op die extensie. Met een AddHandler wordt in de config aangeegven dat shtml-bestanden geparsed moeten worden door de CGI-library.

Gebruikelijke oplossing voor jouw probleem is ditzelfde gedrag ook voor .html-bestanden in te stellen.
code:
1
AddHandler server-parsed .shtml .html

Het is afhankelijk van je host of je dit in een htaccess bestand kunt doen, of dat dit in de configuratie van je virtual-host moet.

Maar als je perse alle requests naar .html wilt wijzigen naar .shtml;
code:
1
RewriteRule ^(.*)\.html$ $1.shtml [L]

[ Voor 15% gewijzigd door frickY op 27-02-2008 12:44 ]


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Verwijderd schreef op woensdag 27 februari 2008 @ 12:39:
[...]

Weet je misschien ook waarom het het volgende had moeten zijn? Je #Options heb ik niet eerder vernoemt zien staan, je querystring word slecht meegestuurd en je mist een end of string terminator.
Omdat iemand die ik ken me deze heeft voorgekauwd 8)7

Ik begrijp er zelf nog steeds niets van, dus als je een betere versie weet dan hoor ik 'm graag. Ik weet alleen dat deze wel werkt en de andere varianten niet.
frickY schreef op woensdag 27 februari 2008 @ 12:43:
Dat je include-virtual alleen in shtml bestanden kunt gebruiken is geen feature van die extensie, maar een instelling in je webserver op die extensie. Met een AddHandler wordt in de config aangeegven dat shtml-bestanden geparsed moeten worden door de CGI-library.

Gebruikelijke oplossing voor jouw probleem is ditzelfde gedrag ook voor .html-bestanden in te stellen.
code:
1
AddHandler server-parsed .shtml .html

Het is afhankelijk van je host of je dit in een htaccess bestand kunt doen, of dat dit in de configuratie van je virtual-host moet.
Hmm... dat wist ik niet. Had m'n host ook wel even mogen melden dan. :/

Anyway, ik heb het nu al met de mod-rewrite opgelost. Het is toch maar een tijdelijke oplossing, want uiteindelijk moet dat cgi-script vervangen worden door php.
Ik heb nu iig iets geleerd voor de volgende keer. Thnx :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Millennyum schreef op woensdag 27 februari 2008 @ 18:58:

[..over AddHandler die .html én .shtml beide parsed..]

Hmm... dat wist ik niet. Had m'n host ook wel even mogen melden dan. :/
Dat kan een bewuste keuze zijn, de vraag is dan wat 'duurder' is voor de Server in kwestie.
Het parsen van elke flat HTML file op includes ook al staan ze er niet, of jouw per-site rewrite.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Volgens m'n host had ik inderdaad html pagina's op die manier kunnen laten parsen, maar het was OF shtml, OF php. Ik had al ingesteld dat php code in html geparsed werd, en het kon blijkbaar niet beide.
Pagina: 1