Avatar billede fangel Nybegynder
30. januar 2004 - 17:20 Der er 18 kommentarer og
1 løsning

mod_rewrite - lidt hjælp til udformning

Hej alle Apache-Eksperten...

Lad os sige jeg har denne pæne sti

www.domaine.dk/forum/php/45

skal laves om til

www.domaine.dk/index.php  ?p0=forum  &p1=php  &p2=45

(mellemrum indsat for at gøre det overskueligt, se bort fra dem)

OSV, den skal kunne gøre det lige meget hvor mange der kommer... ;) kan det lade sig gøre?

Morten
Avatar billede limemedia Nybegynder
30. januar 2004 - 17:25 #1
kan du *virkeligt* ikke begrænse dig til blot nogle få ? eller sige "dér bliver aldrig mere end fem niveauer" (har personligt aldrig anvendt dybere end tre)
Avatar billede fangel Nybegynder
30. januar 2004 - 17:27 #2
hmm... 5 kan med 99% sikkerhed klare det... bare for at være på den sikre side...

men der kan variere mellem 0 og - tjaaa - 5 stykker... nok...

kan du lave det til det er det også OK...

Morten
Avatar billede limemedia Nybegynder
30. januar 2004 - 17:49 #3
jeg har brugt denne med success
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ /index.php?p0=$1&p1=$2&p2=$3 [qsappend]
RewriteRule ^([^/]+)/([^/]+)/$ /index.php?p0=$1&p1=$2 [qsappend]
RewriteRule ^([^/]+)/$ /index.php?p0=$1 [qsappend]

Du kan formodentligt se et mønster allerede ?
Avatar billede fangel Nybegynder
30. januar 2004 - 19:57 #4
lækkert LJ...

har spurgt dig (for ~1 år siden), men har du en god guide til RegExp (Perl, right?)... evt bare om de forskellige RewriteRule ting man kan benytte...
så ville jeg blive glad...

Morten
Avatar billede fangel Nybegynder
30. januar 2004 - 19:58 #5
argg, troede den ville vælge dig til at modtage point hvis der kun var en og man trykkede accepter... men nej... nu er den der...
Avatar billede fangel Nybegynder
30. januar 2004 - 19:59 #6
PS, [qsappend] kan det laves så det ikke kan ses i browseren (ikke helt styr på hvad qsappend gør, ved [R] (?) overskriver add.linien... vil bare sikre mig...)

Morten
Avatar billede fangel Nybegynder
30. januar 2004 - 20:14 #7
LJ, det synes ikke at virke...

symlink til .htacces: http://mfa.ath.cx/DOThtaccess (apache var ikke så keen på at vise dig skjulte filer, så symlinkede den)

modrw.php indeholder bare <?php print_r($_GET); ?>

giver 404 ved fx http://mfa.ath.cx/noget-absolute-unoedvaendigt/

Morten
Avatar billede fangel Nybegynder
30. januar 2004 - 21:13 #8
*HOST* har fundet fejlen... havde glemt at compile mod_rewrite med da jeg compilede Apache... *HOST*

går over til Gentoo's emerge apache istedet... (doh)

Morten
Avatar billede fangel Nybegynder
30. januar 2004 - 22:24 #9
Lars... lytter du stadig?

nu er mod_rewrite compilet

---
bash-2.05b# ./httpd -l
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_rewrite.c
  mod_access.c
  mod_auth.c
  mod_so.c
  mod_setenvif.c
suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec
---

men stadig bare 404... kan du hjæpe?

Morten
Avatar billede limemedia Nybegynder
31. januar 2004 - 05:28 #10
Prøver at svare,
- Nej, jeg har ikke en god guide. Har overvejet at forsøge at skrive en artikel om dét, men du ved ... "tid"
- [qsappend] er "query string append", altså hvis der parameteroverføres ligges disse automatisk efter din egen rewrite - således kan www.domain.com/a/b/?c=d virke
- kan ikke se dit eksempel - slukket maskine ?
- 404, er du sikker på, at du i din httpd.conf har givet mulighed for eksterne .htaccess filer ? egentligt anbefaler 'apache' at ligge det direkte i httpd.conf filen, da dette skulle være væsentligt hurtigere.

Anyways, hvis det ikke virker skal jeg ikke have point for det ...
Avatar billede fangel Nybegynder
01. februar 2004 - 08:33 #11
lars -> ja, det er min workstation, og jeg hjalp min søster med at flytte i går, så computeren var ikke tændt i går....

jeg skimmer lige /etc/httpd/httpd.conf, men der står i hvert fald .htaccess et sted... kigger igen, ellers symlinker jeg også den...

har forresten flyttet sider til en VS...
.htaccess: http://modrw.mfa.ath.cx/DOThtaccess
index: http://modrw.mfa.ath.cx/index.phps (source, rigtig index er index.php)

Morten
Avatar billede fangel Nybegynder
01. februar 2004 - 08:42 #12
kunne ikke rigtigt finde noget konstruktivt om det... kan du?
http://modrw.mfa.ath.cx/httpd.conf

Morten
Avatar billede erikjacobsen Ekspert
01. februar 2004 - 08:45 #13
En skitse til en mere generel løsning:

  RewriteEngine on
  RewriteRule (.*) index.php

og så i index.php bruge $_SERVER['REDIRECT_URL'], hvor du med en split på '/'
kan få alle de parametre du vil have.
Avatar billede limemedia Nybegynder
01. februar 2004 - 08:45 #14
hmm, det minder mest af alt om, at du ikke har konfigureret apache til at tillade .htaccess filer.

i din httpd.conf, kig efter "AllowOverride". Ét eksempel fra min egen httpd.conf
<Directory "/www/www.domain.org">
    Options Includes FollowSymLinks Indexes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

hvor jeg tillader AllowOverride i folderen /www/www.domain.org

se også : http://httpd.apache.org/docs/mod/core.html#allowoverride
Avatar billede fangel Nybegynder
01. februar 2004 - 08:58 #15
det hjalp...

---
<Directory "/www">

#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
    Options Indexes FollowSymLinks MultiViews

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride All
# KOMMENTAR: der stod "AllowOverride None"... nu virker det...

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
</Directory>
---

Nu virker det... as seen on http://modrw.mfa.ath.cx/noget/ged/her/

og virker også med http://modrw.mfa.ath.cx/noget/ged/her/?ekstraInfo=42

super... nu skal jeg bare håbe at mit webhotel også har stillet det sådan... (eller kan det ændres i .htaccess?)

Morten
Avatar billede limemedia Nybegynder
01. februar 2004 - 09:04 #16
de webhotteler jeg har brugt, tillader dette. Men jeg bruger heller ikke 10kr/år hoteller - dér er vel ikke andet for end at sende en mail til support afdelingen og spørge, eller prøve dig frem ;)
Avatar billede fangel Nybegynder
01. februar 2004 - 09:20 #17
tjaa... man kan ikke lave noget AllowOverride All i .htaccess? men jeg spørger da bare...

Morten
Avatar billede limemedia Nybegynder
01. februar 2004 - 09:24 #18
AllowOverride fortæller apache om den overhovet må kigge efter en .htaccess - lidt ulogisk at ligge kode der fortæller om den må kigge efter dén fil, som koden selv står i ;))
Avatar billede fangel Nybegynder
01. februar 2004 - 10:29 #19
ok - troede bare at AllowOverride gjorde så den måtte laver Override på URIen... men der tog jeg jo fejl...

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester