La mia società di hosting mi ha recentemente aggiornato da Apache 1 ad Apache 2, e ho iniziato a vedere un comportamento abbastanza diverso con il mio materiale mod_rewrite.Applicazione regole mod_rewrite AFTER DirectoryIndex viene applicata
Ecco il mio file .htaccess:
DirectoryIndex blog.html
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite current-style URLs of the form 'showpage.php?url=x'.
RewriteRule ^(.*\.html)$ showpage.php?url=$1 [L,QSA]
</IfModule>
Ora, in precedenza con Apache 1, se si è andato a http://mysite.com/ poi la DirectoryIndex sarebbe prima in vigore (http://mysite.com/blog.html) e poi la RewriteRule sarebbe trasformarla in http://mysite.com/showpage.php?url=/blog.html
Ora con Apache 2, se vai a http://mysite.com/blog.html viene riscritto come previsto, ma se vai a http://mysite.com/ ti serve il file vanilla blog.html, senza riscriverlo a showpage.php. Così il RewriteRule viene applicato prima i calci DirectoryIndex in.
Oltre ad aggiungere una regola in più esplicitamente di prendere alla pagina principale (che sarà noioso in quanto avrei dovuto tenere conto di tutte le sottodirectory che hanno anche un DirectoryIndex Qualcuno sa come rendere Apache 2 applicare la RewriteRule dopo applicando DirectoryIndex?
questo funziona per me con Apache 2.2.13. quale versione di apache stai usando? –
Mi piacerebbe sapere se hai mai avuto una buona risposta a questo. Sono bloccato reimplementando la funzionalità di base del server (test per l'esistenza di directory, aggiunta barra finale) in un 'RewriteCond', e peggio, ho più indici'. * 'Cose in' DirectoryIndex', e sembra che devo aggiungere ' -f' test anche per loro. Compagni si stanno accumulando attorno al problema che la riscrittura viene applicata nella fase sbagliata. –