29. januar 2004 - 14:32
Der er
35 kommentarer
.httaccess og Rewrite
jeg har et lille problem... jeg vil gerne have at den laver /boink/ om til /?side=boink (så jeg kan skjule jeg bruge dynamiske navne)... Efter hvad jeg har kunne læse mig til rundt omkring på nettet skal det se noglelunde således ud: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-F RewriteRule ^/$ /?side=$1 problemet er bare at det ikke virker :/ nogle der ved hvordan dette eller laves ?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
29. januar 2004 - 15:10
#1
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-F RewriteRule ^(.*)/$ /?side=$1 Din tjekker om url'en er / og hvis den er sender den videre til /?side=$1 men samtidig er $1 tom, da det skal være det der matcher mellem ( og ) :-)
29. januar 2004 - 18:53
#2
hmm virker stadigvæk ikke :( og jeg har skrevet den direkte ind i min httpd.conf
<Directory /var/www/boink/>
AllowOverride AuthConfig
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^(.*)/$ /?side=$1
</Directory>
syntes jeg har gjort alt som der står på
www.apache.com :/
29. januar 2004 - 19:56
#3
Tja hvis du har gjort alt hvad der står på
www.apache.com kan jeg godt forstå det er gået galt :-) Deres adresse er
www.apache.org ...
Har du enablet mod_rewrite ? dvs. fjerne # foran følgende linier:
LoadModule rewrite_module modules/mod_rewrite.so
og
AddModule mod_rewrite.c
Og har du husket at genstarte apache, efter du har ændret i httpd.conf?
Står der noget i din error.log?
Hvordan tester du det? det er sådan at
http://domain.dk/boink/ vil gå til
http://domain.dk/?side=boink men
http://domain.dk/boink vil du få en 404 fejl af, da den ikke er indbefattet af din rewrite.
29. januar 2004 - 20:25
#4
ja apache.org self. :)... så mod_rewrite er tilføjet, og jeg intaster det rigtigt.. rewrite skulle være aktiveret på mappen /var/www/ny/ her er et udsnit fra min error.log [Thu Jan 29 20:17:46 2004] [error] (2)No such file or directory: mod_mime_magic: can't read magic file /etc/apache/share/magic Processing config directory: /etc/apache/conf.d Processing config file: /etc/apache/conf.d/phpmyadmin [Thu Jan 29 20:17:46 2004] [warn] module mod_rewrite.c is already added, skipping [Thu Jan 29 20:17:46 2004] [crit] (98)Address already in use: make_sock: could not bind to port 80 [Thu Jan 29 20:19:55 2004] [error] [client 192.168.1.7] File does not exist: /var/www/ny/1/ men hvis jeg fx. prøver /ny/boink/ og der er en fil der hedder boink.php i mappen, viser den filen boink..
29. januar 2004 - 20:50
#6
de 2 første kommer den med 404 fejl og /?side=boink åbner den rigtige side.. error.log -------- [Thu Jan 29 20:46:02 2004] [error] (2)No such file or directory: mod_mime_magic: can't read magic file /etc/apache/share/magic Processing config directory: /etc/apache/conf.d Processing config file: /etc/apache/conf.d/phpmyadmin [Thu Jan 29 20:46:02 2004] [warn] module mod_rewrite.c is already added, skipping [Thu Jan 29 20:46:02 2004] [crit] (98)Address already in use: make_sock: could not bind to port 80
29. januar 2004 - 20:55
#7
Prøv lige og stop din apache og prøv og tilgå siden igen :-) Det ser ud til at du allerede har en webserver kørende, og at din apache aldrig kommer op...
29. januar 2004 - 21:04
#8
hov... efter kill / opstart af apache skete der noget..... :) [Thu Jan 29 21:01:15 2004] [alert] [client 192.168.1.7] /var/www/ny/.htaccess: RewriteEngine not allowed here
29. januar 2004 - 21:35
#9
Har du smidt rewriteengine i en .htaccess? for så er det klart, da rewriteengine ikke er tilladt med den allowoverride du har givet den! Den skal have FileInfo
29. januar 2004 - 21:36
#10
AllowOverride AuthConfig FileInfo eller AllowOverride All
29. januar 2004 - 21:46
#11
ok, nu er der et lille hul igennem, hvis jeg requester /boink og filen boink.php ikke findes hopper den rigtigt nok til /?side=boink men hvis jeg requester /foo/ og filen /foo.php findes hopper den direkte til /foo.php,, btw. undskyld alle de dumme spørgsmål, jeg har aldrig rodet med .htaccess før :(
29. januar 2004 - 22:00
#12
skriver du /foo.php eller /foo/ ?? Det er i orden at spørge, hvis man ikke spørger lærer man hellere ikke noget...
29. januar 2004 - 22:03
#13
Men kan ikke helt forstå hvorfor den skal gå direkte til filen, du forespørger jo ikke på den... Men ellers gør din RewriteCond %{REQUEST_FILENAME} !-F at hvis det forespurgte ikke findes via et subreuest - bliver rewriterule eksekveret.
29. januar 2004 - 22:09
#14
29. januar 2004 - 22:11
#15
hmm altså hvis jeg skriver www.domæne.dk/foo eller www.domæne.dk/foo/ og filen www.domæne.dk/foo.php findes, bliver foo.php vist.. ( måske det er et andet der er forkert i min httpd.conf )
tror foresten også den gjorde dette før jeg roede med .htaccess
min configfil ligger her:
http://80.196.128.194/httpd.conf
29. januar 2004 - 22:18
#16
Kan du ikke også lige linke til modules.conf og conf.d men kan du ikke prøve og smide rewritelog på med rewriteloglevel 9 ?
29. januar 2004 - 22:18
#17
Og hvad står der helt nøjagtigt i .htaccess ??
29. januar 2004 - 22:45
#19
Der er vist rod i din php... du indsætter php flere gange, både i httpd.conf og i conf.d. Prøv og slet det fra httpd.conf Det ligner også du har haft php3 kørende på den engang? Men bortset fra det er der ikke noget der indikerer at du skulle kunne bliver videresendt. Sæt rewritelog til 9 og forespørg på www.domæne.dk/foo og www.domæne.dk/foo/ hvor www.domæne.dk/foo.php eksisterer
30. januar 2004 - 23:51
#20
sådan, undskyld ventetid, ny har jeg lavet de forespørgelser min .htaccess ser sådan ud: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-F RewriteRule ^(.*)/$ /ny/?side=$1 og ja jeg har haft php3 kørende..
30. januar 2004 - 23:53
#21
btw. er mappen jeg har forespurgt på anbefal/
01. februar 2004 - 17:56
#22
Og hvad står der så i din error.log? og hvad står der i din rewrite.log? Du har selvfølgelig sat rewriteloglevel til 9 ikke?
01. februar 2004 - 20:01
#24
Du har da ikke forespurgt på de ting jeg skrev i de logs?
02. februar 2004 - 12:51
#25
02. februar 2004 - 20:20
#26
Du skal for det første have fjernet 3. nederste linie i din httpd.conf AddModule mod_rewrite.c Så fjern alle relationer til php3 fra conf.d <IfModule mod_php3.c> AddType application/x-httpd-php3 .php php3_magic_quotes_gpc Off php3_track_vars On php3_include_path . </IfModule> derudover skal din rewritebase laves om til RewriteBase /ny/ - da det er dette bib du går ud fra. Og har du så ellers andet stående i .htaccess end din rewrite?
03. februar 2004 - 15:54
#27
done... hmm når du skriver conf.d mener du conf.d/phpmyadmin ikke ? (den eneste fil jeg har) nej der står ikke andet i mon .htaccess. min .htaccess ligger i /ny/ skal Rewritebasen så stadigvæk hedde /ny/ ?
03. februar 2004 - 16:30
#28
/etc/apache/conf.d =
http://80.196.128.194/conf.d = den jeg mener :-)
ja når den ligger i /ny skal rewritebase være /ny/
03. februar 2004 - 16:46
#30
uden / efter phpmyadmin selvfølgelig
03. februar 2004 - 17:54
#31
Har du en fil der hedder /etc/apache/conf.d ?? altså som fil og ikke med / bagefter? Det er nemlig denne der bliver inkluderet i din apache
03. februar 2004 - 18:00
#32
nej den fil har jeg ikke
03. februar 2004 - 18:26
#33
jeg kan ikke overskue hvad der sker og ikke sker. Jeg må melde pas herfra. Men jeg vil næsten anbefale dig at recompilere apache og php, eller hvis det er pakker så fjern og installer igen. Husk hvis du compilerer at du skal have --enable-module=rewrite på din apache.
03. februar 2004 - 18:35
#34
ok, men du skal have tak for hjælpen. tror jeg vil prøve at recompile lortet og se om det hjælper..
så vidt jeg ved er FileInfo den mod_rewrite bruger derfor: <Directory /var/www/boink/> AllowOverride AuthConfig FileInfo </Directory> ...eller den total usikre <Directory /var/www/boink/> AllowOverride All </Directory>
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.