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

[mod_rewrite] Optionele extentie omzetten naar parameter

Pagina: 1
Acties:

  • Farmerwood
  • Registratie: September 2004
  • Niet online
Ik ben een beetje aan het experimenteren met een zelfgemaakte REST-API en nu wil ik graag de mogelijkheid toevoegen om optioneel aan het einde van de URI het gewenste return format mee te geven i.p.v via de Accept method header.

Voorbeeld:
Mocht het optionele html|json|xml opgegeven zijn dan wil ik dit omzetten via mod_rewrite in:
Dit probeer ik via mod_rewrite voor elkaar te krijgen wat intussen geresulteerd heeft in onderstaand script.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    # Ignore existing files and directories
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # ORG: Just redirect all API-calls to index.php including parameters
    # RewriteRule ^(.*)$ index.php/$1 [QSA,L]

    # Convert URI to parameter
    # RewriteRule ^(.*)$ index.php?resource=$1 [QSA,L]
    
    # Accept method in the url. Convert to parameter
    # RewriteRule ([^\.]+).(json|html|xml|atom)$ index.php?resource=$1&type=$2 [QSA,NC,L]
    
    # Attempt to convert optional accept method from file extension to parameter
      RewriteRule ([^\.]+).(json|html|xml|atom)$ index.php?resource=$1&type=$2 [QSA,NC,L]
      RewriteRule ^(.*)$ index.php?resource=$1 [QSA,L]

</IfModule>


Waar ik eigenlijk heen wil is dit (URI niet via de parameter resource, maar op de REST-manier):


code:
1
2
      RewriteRule ([^\.]+).(json|html|xml|atom)$ index.php/$1?type=$2 [QSA,NC,L]
      RewriteRule ^(.*)$ index.php/$1 [QSA,L]


Deze 2 regels leveren me echter een 500 Internal Server Error op. Dat gebeurd ook als ik alleen in de laatste regel de 'resource weg haal.
code:
1
2
      RewriteRule ([^\.]+).(json|html|xml|atom)$ index.php?resource=$1&type=$2 [QSA,NC,L]
      RewriteRule ^(.*)$ index.php/$1 [QSA,L]


Ik heb vanuit de documentatie de flag L toegevoegd met het idee dat de laatste regel niet uitgevoerd wordt wanneer de een na laatste geldig is. Die laatste regel lijkt er door de fout wel degelijk bij betrokken te worden. Maar waarom?

Wie kan me vertellen wat ik fout doe? :?

[ Voor 0% gewijzigd door Farmerwood op 17-07-2015 15:50 . Reden: Typo ]