Beste ,

Ik probeer via .htaccess in te stellen dat `.php?id= niet wordt weergegeven in de URL. Ik probeer dit te realiseren met de volgende regel:
RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]

Mijn verwachting hiermee is dat wanneer ik navigeer naar:
www.mijndomeinnaam.nl/map/Change/abc123

De inhoud van de volgende pagina te zien krijg:
www.mijndomeinnaam.nl/map/Change?id=abc123

Echter, is dit niet het geval. Wanneer ik hier naar navigeer krijg ik een Internal Server Error (The server encountered an internal error or misconfiguration and was unable to complete your request).

Mijn .htaccess ziet er als volgt uit:

RewriteEngine on
RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

php_value session.cookie_domain .mijndomeinnaam.nl


Weet iemand toevallig waar dit aan ligt?
Heb je al in je error_log gekeken?
Hoi Ariën,
Daar heb ik al in gekeken. Ik weet alleen niet of de melding te maken heeft met .htaccess. Meest recente regel uit error_log is:
[Thu May 02 00:11:01.878760 2019] [core:notice] [pid 3230] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

[size=xsmall]Toevoeging op 02/05/2019 21:46:13:[/size]

Dit is trouwens een Apache Error Log (var/log/httpd/error_log)
Als Apache in CGI-modus draait, wat blijkbaar aanbevolen wordt, werken de directives php_value en php_flag niet in .htaccess bestanden, deze veroorzaken dan Internal Server Errors.

Je kunt een php.ini gebruiken, een .user.ini (?) in je webdirectory (let op initiele punt) gebruiken, of simpelweg het .htaccess bestand gebruiken, maar dan met de .ini-opmaak:
<setting> = <value>
bijvoorbeeld
upload_max_filesize = 2M

oftewel, probeer eens "php_value" te verwijderen.
Ik had al geprobeerd om php_value te verwijderen. Hetzelfde geldt voor de regels die betrekking hebben op .php.

Ondanks dat ik deze regels verwijder blijf ik dezelfde melding krijgen.
Dan is het misschien handiger om dingen regel per regel te verwijderen om te zien wat de boosdoener is.

Wat je nog kunt proberen is .php achter %{REQUEST_FILENAME} te verwijderen, volgens mij hoort die extentie daar niet thuis.

En moet dat niet !-f zijn? Tenzij al je PHP-scripts in de webdirectory staan, wat in geval van gebruikmaking van rewriterules mogelijk niet echt handig is, omdat je dan "botsingen" kunt krijgen tussen virtuele namen en bestaande bestanden?

Daarnaast is het ook handiger om alles naar één script te sturen - nu heb je tig "voordeuren" in je applicatie, het is handiger om slechts één enkele voordeur (single point of entry) te hebben.

RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]

Mijn verwachting hiermee is dat wanneer ik navigeer naar:
www.mijndomeinnaam.nl/map/Change/abc123


nee. Want door de ^ zeg je, dat het path moet _beginnen_ met Change. En in jouw voorbeeld begint dat met "map"
Thomas van den Heuvel op 02/05/2019 22:21:28

Als Apache in CGI-modus draait, wat blijkbaar aanbevolen wordt, werken de directives php_value en php_flag niet in .htaccess bestanden, deze veroorzaken dan Internal Server Errors.

Je kunt een php.ini gebruiken, een .user.ini (?) in je webdirectory (let op initiele punt) gebruiken, of simpelweg het .htaccess bestand gebruiken, maar dan met de .ini-opmaak:
<setting> = <value>
bijvoorbeeld
upload_max_filesize = 2M

oftewel, probeer eens "php_value" te verwijderen.

Klopt, maar op servers valt ook 'htscanner' te installeren die deze php-flags wel in deze situatie laten werken in .htaccess. Ik weet dat DirectAdmin ervan voorzien is ;-)
- Ariën - op 03/05/2019 11:33:27

Klopt, maar op servers valt ook 'htscanner' te installeren die deze php-flags wel in deze situatie laten werken in .htaccess. Ik weet dat DirectAdmin ervan voorzien is ;-)

Maar waarom zou je een extra mod aanbrengen die een .htaccess patcht? :/
Gebruik gewoon syntax die direct werkt.
Omdat niet iedereen veel kennis heeft, en php_flags vroeger veel gebruikt werden.
Geen van beide is een excuus, noch een sterke reden. Fix de syntax gewoon, probleem opgelost.

Reageren