pad herschrijven dmv .htaccess

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • klystr
  • Registratie: Maart 2009
  • Laatst online: 14-09 16:34
Ik heb een .htaccessbestand dat voor mij de gehele query string doorstuurt naar index.php. Nadeel hiervan is wel dat ik nu de verwijzing naar het css-bestand niet werkend krijg. Dit is wat ik tot nu heb maar ik het css-bestand wordt niet geladen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Options +FollowSymLinks -Indexes -ExecCGI -Includes -MultiViews

# Launch RewriteEngine
RewriteEngine On
RewriteBase /leeg-project/website

# Rewrite all css files so you can use them anywhere
# and with version number. eg. /css/v3/site.css will rewrite in: /css/site.css
RewriteRule ^(css|img|js|swf)/(v[0-9]+/)?(.*)$ /$1/$3 [L]

# Make sure PHP handles query string for non-existing files
RewriteRule ^$ index.php [L]

# File exists, access it directly
RewriteCond %{SCRIPT_FILENAME} !-d [NC]
RewriteCond %{SCRIPT_FILENAME} !-f [NC]
RewriteRule .* index.php [L]


Zou iemand mij kunnen vertellen hoe ik alle bestanden in de mappen css, img, js en swf altijd naar dezelfde plaats kan krijgen?

Acties:
  • 0 Henk 'm!

  • MuisM4t
  • Registratie: Mei 2007
  • Niet online
base : http://www.handleidinghtml.nl/html/elementen/base.html al gebruikt?

[ Voor 96% gewijzigd door MuisM4t op 01-03-2009 15:53 ]


Acties:
  • 0 Henk 'm!

  • klystr
  • Registratie: Maart 2009
  • Laatst online: 14-09 16:34
Maar, da's toch verre van handig? Dan moet ik dat toevoegen aan alle links in het systeem naar css, js, swf en afbeeldingen. Dat moet toch anders kunnen?

tnx voor je antwoord tho

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Het probleem is dat je rewrite rule ook op de normale bestanden matched. In een vhost zou je rewrite rule (zover ik kan zien) geen probleem opleveren. Maar in een .htaccess bestand wel. Waarom dit zo is vind op The Truth about the Last mod_rewrite's modifier.

Je zou in de volgende rewrite rule:
code:
1
RewriteRule ^(css|img|js|swf)/(v[0-9]+/)?(.*)$ /$1/$3 [L]


het vraagteken weg moeten halen, dan zal ie volgens mij prima werken, bestanden die bestaan op het filesystem worden dan afgevangen door:
code:
1
RewriteCond %{SCRIPT_FILENAME} !-f [NC]


Van de last modifier [L] lijkt het me dan netter om een passthrough te maken [PT] (die impiceert ook [L]), maar dat beschrijft eigenlijk beter wat ie doet.

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • klystr
  • Registratie: Maart 2009
  • Laatst online: 14-09 16:34
Ah, bedankt voor je antwoord...

Het werkt helaas nog niet, ik heb het vraagteken weggehaald maar dat had niet erg veel effect. Ik verwijs in mijn HTML bestand naar (hier heb ik ook al wat gespeeld met versienummers en slashes, maar helaas)
code:
1
<link type="text/css" rel="stylesheet" href="/css/site.css" media="screen, projection"/>


Ik heb nu de volgende .htaccess de vorige was een knipsel

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Options +FollowSymLinks -Indexes -ExecCGI -Includes -MultiViews

# Launch RewriteEngine
RewriteEngine On
RewriteBase /leeg-project/website

# Rewrite all css files so you can use them anywhere
# and with version number. eg. /css/v3/site.css will rewrite in: /css/site.css
RewriteRule ^(css|img|js|swf)/(.*)$ /$1/$3 [PT]

# Make sure PHP handles query string for non-existing files
RewriteRule ^$ index.php [L]

# File exists, access it directly
RewriteCond %{SCRIPT_FILENAME} !-d [NC]
RewriteCond %{SCRIPT_FILENAME} !-f [NC]
RewriteRule .* index.php [L]

# Secure PHP
php_flag register_globals off
php_flag allow_call_time_pass_reference off
php_flag expose_php off
php_flag register_argc_argv off
php_flag register_long_arrays off
php_flag session.use_trans_sid off
php_flag magic_quotes_gpc off

# TODO: off als alles goed werkt
php_flag display_errors on

php_value session.auto_start 0
php_value session.name SID
php_value session.use_only_cookies 1
php_value upload_max_filesize  20971520
php_value memory_limit 64M

[ Voor 6% gewijzigd door klystr op 01-03-2009 16:17 ]


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
Heb je enig idee wat je nu doet eigenlijk? Wat zou die $3 moeten bevatten in:
code:
1
RewriteRule ^(css|img|js|swf)/(.*)$ /$1/$3 [PT]


Waarom zou je deze rewrite rule eigenlijk nog nodig hebben als je niet met versienummers meer werkt?

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • Svennetjee
  • Registratie: December 2007
  • Laatst online: 21-09 18:13
Borizz schreef op zondag 01 maart 2009 @ 17:56:
Heb je enig idee wat je nu doet eigenlijk? Wat zou die $3 moeten bevatten in:
code:
1
RewriteRule ^(css|img|js|swf)/(.*)$ /$1/$3 [PT]

[...]
Als ik het goed heb bevat de $1 de waarde die gekozen is uit "(css|img|js|swf)", en de $3 bevat dan alles wat de "(.*)" opgevangen heeft.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

en wat is $2 dan?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • klystr
  • Registratie: Maart 2009
  • Laatst online: 14-09 16:34
Goed, we doen het anders

Ik wil nu proberen om altijd een versienummer op te geven, dus de html ziet er altijd zo uit:
code:
1
<link type="text/css" rel="stylesheet" href="/css/v1/site.css" media="screen, projection"/>


Die moet worden herschreven in "css/site.css"

Nu heb ik de volgende regels, en dat werkt niet
code:
1
2
3
4
5
6
7
8
9
10
11
RewriteEngine On
RewriteBase /leeg-project/website/
RewriteRule ^/(css|img|js|swf)/(.*)/(.*)$ $1/$3 [PT]

# Make sure PHP handles query string for non-existing files
RewriteRule ^$ index.php [L]

# File exists, access it directly
RewriteCond %{SCRIPT_FILENAME} !-d [NC]
RewriteCond %{SCRIPT_FILENAME} !-f [NC]
RewriteRule .* index.php [L]


Kan iemand mij vertellen hoe ik dit wel aan de praat krijg?

[ Voor 72% gewijzigd door klystr op 01-03-2009 19:42 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

en dat werkt niet
Wát werkt er niet? Heb je de serverlogs al eens bekeken?

Waarom zet je de middelste (.*) tussen haakjes als je 'm toch niet gebruikt? Maar belangrijker - houd rekening met greediness van regular expressions. een punt matcht ook een /. Bovendien betekent een * dat er 0 of meer matches mogen zijn. Ik weet niet precies of het voor mod_rewrite ook geldt, maar meestal zijn regexen default greedy, dwz dat ze zoveel mogelijk matchen. Oftewel, het grootste deel van de url zal in $2 komen, en alleen het gedeelte na de laatste slash in $3. De url /css/aap/noot/mies zal dus worden herschreven naar /css/mies en /css/aap/noot/mies/ naar /css/

Ook begin je de match met een /, maar de herschreven url begint niet met een /. Geen of je überhaupt de beginnende / moet gebruiken met een rewrite base die eindigt in een /, maar het lijkt me dat het iig consistent moet zijn.

.edit: de documentatie van RewriteBase laat zien dat er geen trailing slash gebruikt wordt in de base en dat een match bovendien niet begint met een slash.

[ Voor 107% gewijzigd door .oisyn op 01-03-2009 19:57 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1