login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mod_rewrite in Apache

Offline Voldemort - 18/03/2007 11:11
Avatar van VoldemortPHP ver gevorderde Beste,

Ik heb een probleempje met mod_rewrite. Ik gebruik Apache 2.2.3 onder Linux (zelf gecompiled met [url=http://www.sitemasters.be/tutorials/10/1/438/Webservers/LINUX_Apache,_Mysql,_Pgsql,_ftp,_php_(17_12_2k6)]deze tutorial[/url]). Ik wil de module mod_rewrite gebruiken, hoe kan ik die module activeren?

22 antwoorden

Gesponsorde links
Offline vinTage - 18/03/2007 11:21
Avatar van vinTage Nieuw lid Toevallig moest ik dat ook doen gisteren (en lukte me niet) maar vogens murfy moet je ongeveer hier zijn
/etc/apache2/httpd.conf

en dan het # weghalen bij loadModule...mod_rewrite



Alleen ik heb een gare linux versie wss want mijn httpd.conf is op een berichtje na over iets met 3th party blabla leeg.
Offline Voldemort - 18/03/2007 11:33 (laatste wijziging 18/03/2007 17:30)
Avatar van Voldemort PHP ver gevorderde Bij mij staat dat in /opt/webserver/apache/conf/

httpd.conf bevat niet eens het woord "mod_rewrite" en de enige module die ie laadt is de php4 module.

Verder komt het woord mod_rewrite enkel voor in de map /manual/

Wat nu?
Offline Anoniem - 18/03/2007 17:47
Avatar van Anoniem PHP gevorderde Wat gebeurt er als je zelf die regel toevoegt?
Offline ikkedikke - 18/03/2007 18:09
Avatar van ikkedikke PHP expert dan moet je eronder ook nog zetten addmodule en dan nog iets.
Offline Voldemort - 18/03/2007 18:15
Avatar van Voldemort PHP ver gevorderde Hoe moet ik die regel(s) toevoegen, wat moet er precies staan?
Offline Dark_Paul - 19/03/2007 09:55 (laatste wijziging 19/03/2007 09:59)
Avatar van Dark_Paul PHP ver gevorderde Er staat als het goed is gewoon een regel met iets van 'mod_rewrite' (staat er niet letterlijk in) in je httpd.conf.. Hier moet je dan inderdaad gewoon de '#' voor weghalen en klaar..
Ik zal vanmiddag eens kijken voor je als ik thuis ben.

Edit:
Ergens in httpd.conf staat een hele waslijst aan LoadModules, daar staat iets van mod_rewrite bij, zoek daar maar eens tussen.

Citaat:
Rens edit:
Voldemort zei al:
httpd.conf bevat niet eens het woord "mod_rewrite" en de enige module die ie laadt is de php4 module.


@Rens: die regel staat er ook niet letterlijk in, dat is het probleem ;)

@Voldemort: ik heb de regel gevonden:
LoadModule rewrite_module modules/mod_rewrite.so

Ow poep, er stond dus wel mod_rewrite in die regel, ik dacht van niet.. Die regel moet je in ieder geval wel hebben.
Offline Rens - 19/03/2007 10:00
Avatar van Rens Gouden medaille

Crew algemeen
Als hij het woord "mod_rewrite" niet kan vinden, waarom zou mod_rewrite.so er dan wel staan?
Bevat "mod_rewrite", en zoals Voldemort het zegt, kan ik er uit opmaken dat hij precies op "mod_rewrite" heeft gezocht...
Offline Voldemort - 23/03/2007 20:19
Avatar van Voldemort PHP ver gevorderde Ik heb even gekeken in de map:

/opt/webserver/apache/modules/

En daar staan 2 bestanden:

httpd.exp
libphp4.so

Wil dit dan zeggen dat ik die module gewoon niet heb / niet heb mee gecompiled? Hoe kan ik die installeren? In de source staat ie er wel bij, dus ik heb de source wel goed. Wat nu?
Offline Ultimatum - 23/03/2007 21:14
Avatar van Ultimatum PHP expert Ik weet niet of het in linux anders is, maar kijk eens in de map apache/conf en dan in het bestand httpd.conf, hier staat het bij windows tenminste in..
Offline Voldemort - 24/03/2007 10:24
Avatar van Voldemort PHP ver gevorderde @Ultimatum: Het bestand httpd.conf staat op die locatie, maar zoals ik al zei staat er geen loadModule mod_rewrite of dergelijke in, enkel de PHP 4 module.
Offline Ultimatum - 24/03/2007 10:43
Avatar van Ultimatum PHP expert Sorry, mijn fout. Dacht dat je nog niet in die map had gekeken . Ik lees nu net dat je het al gedaan had 
Offline Voldemort - 24/03/2007 20:28
Avatar van Voldemort PHP ver gevorderde Ok. Is er iemand die weet hoe ik het werkende kan krijgen?
Offline ikkedikke - 25/03/2007 15:22
Avatar van ikkedikke PHP expert Bij mij ziet de lijst er ongeveer zo uit:
  1. #
  2. # Dynamic Shared Object (DSO) Support
  3. #
  4. # To be able to use the functionality of a module which was built as a DSO you
  5. # have to place corresponding `LoadModule' lines at this location so the
  6. # directives contained in it are actually available _before_ they are used.
  7. # Please read the file README.DSO in the Apache 1.3 distribution for more
  8. # details about the DSO mechanism and run `apache -l' for the list of already
  9. # built-in (statically linked and thus always available) modules in your Apache
  10. # binary.
  11. #
  12. # Note: The order in which modules are loaded is important. Don't change
  13. # the order below without expert advice.
  14. #
  15. # Example:
  16. # LoadModule foo_module modules/mod_foo.so
  17. #
  18. #LoadModule vhost_alias_module modules/mod_vhost_alias.so
  19. #LoadModule mime_magic_module modules/mod_mime_magic.so
  20. LoadModule status_module modules/mod_status.so
  21. LoadModule info_module modules/mod_info.so
  22. #LoadModule speling_module modules/mod_speling.so
  23. LoadModule rewrite_module modules/mod_rewrite.so
  24.  
  25. #LoadModule php4_module "${path}/php/php4apache.dll"
  26. LoadModule php5_module "${path}/php/php5apache.dll"
  27.  
  28. #
  29. # Reconstruction of the complete module list from all available modules
  30. # (static and shared ones) to achieve correct module execution order.
  31. #
  32. # The modules listed below, without a corresponding LoadModule directive,
  33. # are static bound into the standard Apache binary distribution for Windows.
  34. #
  35. # Note: The order in which modules are loaded is important. Don't change
  36. # the order below without expert advice.
  37. #
  38. # [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE, UPDATE THIS TOO!]
  39. ClearModuleList
  40. #AddModule mod_vhost_alias.c
  41. AddModule mod_env.c
  42. AddModule mod_log_config.c
  43. #AddModule mod_mime_magic.c
  44. AddModule mod_mime.c
  45. AddModule mod_negotiation.c
  46. #AddModule mod_status.c
  47. AddModule mod_info.c
  48. AddModule mod_include.c
  49. AddModule mod_autoindex.c
  50. AddModule mod_dir.c
  51. AddModule mod_isapi.c
  52. AddModule mod_cgi.c
  53. AddModule mod_asis.c
  54. AddModule mod_imap.c
  55. AddModule mod_actions.c
  56. #AddModule mod_speling.c
  57. AddModule mod_userdir.c
  58. AddModule mod_alias.c
  59. AddModule mod_rewrite.c
  60. AddModule mod_access.c
  61.  
  62. AddModule mod_so.c
  63. AddModule mod_setenvif.c
  64. #AddModule mod_php4.c
  65. AddModule mod_php5.c

je moet dus
AddModule mod_rewrite.c
toevoegen boven de phpmodule,
LoadModule rewrite_module modules/mod_rewrite.so
boven de load van php.
Offline Voldemort - 25/03/2007 18:04 (laatste wijziging 30/03/2007 21:02)
Avatar van Voldemort PHP ver gevorderde Dan krijg ik dit:

  1. httpd: Syntax error on line 42 of /opt/webserver/apache/conf/httpd.conf: Cannot load /opt/webserver/apache/modules/mod_rewrite.so into server: /opt/webserver/apache/modules/mod_rewrite.so: cannot open shared object file: No such file or directory


Hoe installeer ik die module naar dat path? Volgens mij heb ik die module niet mee gecompiled, kan dat? Hoe compile ik hem dan wel mee (en installeer hem dus)?
Offline Ibrahim - 31/03/2007 09:26
Avatar van Ibrahim PHP expert door gewoon een pakketje te downloaden, ben je meteen van dit gezeur af 
Offline Voldemort - 31/03/2007 09:36 (laatste wijziging 03/04/2007 09:04)
Avatar van Voldemort PHP ver gevorderde @siliecom14: Dan weet ik niet echt hoe ik die moet configureren hoor (PHP & MySQL met Apache laten werken, etc). Ook de versies zijn niet wat ik zou willen (ik wil de versies gelijk houden aan die van m'n online hosting en die lopen soms wel wat achter). Dus dit is geen optie.

Weet iemand hoe dit op te lossen valt?

Edit: Niemand die weet hoe dit op te lossen valt?
Offline tim2005 - 03/04/2007 11:44
Avatar van tim2005 Nieuw lid De mod_rewrite te downloaden en in de juiste map te zetten, want zo te zien ontbreekt die in de map (/opt/webserver/apache/modules)

Je hebt dus mod_rewrite.so nodig, en ik denk dat die wel te vinden in op de website van apache (ze hebben daar ergens een mod-gedeelte).

Gr, Tim
Offline Voldemort - 04/04/2007 14:23 (laatste wijziging 04/04/2007 15:07)
Avatar van Voldemort PHP ver gevorderde http://httpd.ap...write.html

Daarin staat dat het source file mod_rewrite.c is. Nu heb ik de source erbij gepakt en daar staat het:

modules/mappers/mod_rewrite.c

Dus het zit in de source, alleen is het niet meegecompiled, hoe kan ik die module apart compilen?




Edit: Ik ben erin geslaagd de module te installeren met deze code:

cd /opt/webserver/apache/bin/
apxs -i -a -c /home/quinten/Server/httpd-2.2.3/modules/mappers/mod_rewrite.c

Nu is alles automatisch aangepast in /opt/webserver/apache/conf/httpd.conf

phpinfo zegt dat mod_rewrite geladen is, alleen wil .htaccess niet werken. Mijn lokale site staat in:

/home/quinten/www/hp-d_v30/

DocumentRoot is /home/quinten/www/

.htacces staat in /home/quinten/www/hp-d_v30/

Code die erin staat:

  1. <Files .htaccess>
  2. order allow,deny
  3. deny from all
  4. </Files>
  5.  
  6. RewriteEngine on
  7. RewriteCond %{HTTP_REFERER} !^$
  8. RewriteCond %{HTTP_REFERER} !^http://(www\.)?harrypotter-dreuzels.com/.*$ [NC]
  9. RewriteCond %{HTTP_REFERER} !^http://(www\.)?harrypotter-dreuzels.eu/.*$ [NC]
  10. RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/.*$ [NC]
  11. RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.be/.*$ [NC]
  12. RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.nl/.*$ [NC]
  13. RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.com/.*$ [NC]
  14. RewriteRule \.(gif|jpg|png)$ - [F]
  15.  
  16. RewriteRule ^nieuws/([0-9]+)/ http://localhost/hp-d_v30/?nieuwsid=$1
  17. RewriteRule ^nieuws/([0-9]+) http://localhost/hp-d_v30/?nieuwsid=$1
  18.  
  19. ErrorDocument 400 /includes/errors.php?error=400
  20. ErrorDocument 401 /includes/errors.php?error=401
  21. ErrorDocument 403 /includes/errors.php?error=403
  22. ErrorDocument 404 /includes/errors.php?error=404
  23. ErrorDocument 500 /includes/errors.php?error=500


Ik ga naar:

http://localhost/hp-d_v30/nieuws/1/

En ik zie dit:

Citaat:
Not Found

The requested URL /hp-d_v30/nieuws/1/ was not found on this server.


Nu zijn mijn vragen:

1) Waarom werkt die mod_rewrite nu nog niet?
2) Waarom krijg ik niet mijn eigen error pages zoals in die .htaccess staat?
Offline Stijn - 04/04/2007 15:24
Avatar van Stijn PHP expert Heb je mod_rewrite.so in je modules map staan? Zo niet, download dan die van mij op volgende link:

http://www.eos-team.org/eos/mod_rewrite.so

Zet hem in je modules map. Open je httpd.conf en hij zou er zo ongeveer moeten uitzien:

http://www.plaatscode.be/4871/

Let vooral op dat AllowOverride op All staat en niet op None. Dit toepassen op alle AllowOverride in die config.

herstart apache en hij zou het moeten doen Ik had ook het probleem dat hij me .htaccess niet wilde uitvoeren maar toch stond mod_rewrite.so in de modules map. En door die AllowOverride werkt hij nu terug.

ps: welke linux heb je? ik heb pc linux os
Offline Voldemort - 04/04/2007 15:46 (laatste wijziging 04/04/2007 15:47)
Avatar van Voldemort PHP ver gevorderde Nu werkt het met die AllowOverride te veranderen naar All.

Ik heb openSUSE 10.2 (i386) met Linux 2.6.18.8 default.

Alleen nu maakt ie er een redirect van ipv het url zo te laten, kan dit ook opgelost worden?

Met redirect bedoel ik als ik /nieuws/1/ intyp er in m'n adressbalk dit komt: ?nieuwsid=1 en hij die pagina laadt. Op m'n online host doet ie dat niet, dan laat ie die /nieuws/1/ in de adressbalk staan en laadt ie ?nieuwsid=1. Kan dit opgelost worden?
Offline Stijn - 04/04/2007 16:03
Avatar van Stijn PHP expert Kijk eens of er een redirect staat in de httpd.conf ofzo Dat probleem heb ik nog niet ondervonden.
Offline Voldemort - 04/04/2007 20:28 (laatste wijziging 06/04/2007 09:40)
Avatar van Voldemort PHP ver gevorderde Dit is hoe het bij mij nu staat (stukje van /opt/webserver/apache/conf/httpd.conf):

  1. <Directory "/home/quinten/www">
  2. #
  3. # Possible values for the Options directive are "None", "All",
  4. # or any combination of:
  5. # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
  6. #
  7. # Note that "MultiViews" must be named *explicitly* --- "Options All"
  8. # doesn't give it to you.
  9. #
  10. # The Options directive is both complicated and important. Please see
  11. # http://httpd.apache.org/docs/2.2/mod/core.html#options
  12. # for more information.
  13. #
  14. Options Indexes FollowSymLinks
  15.  
  16. #
  17. # AllowOverride controls what directives may be placed in .htaccess files.
  18. # It can be "All", "None", or any combination of the keywords:
  19. # Options FileInfo AuthConfig Limit
  20. #
  21. AllowOverride All
  22.  
  23. #
  24. # Controls who can get stuff from this server.
  25. #
  26. Order allow,deny
  27. Allow from all
  28.  
  29. </Directory>


Zo heb ik nog een identieke voor phpMyAdmin staan (die in een andere directory staat (/opt/webserver/phpMyAdmin-2.9.0.2)).

Weet je nu hoe dit komt? Weet iemand een oplossing voor dat redirect probleem?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.229s