2010-03-18 10 views
5

Ho raschiato un sacco di pagine usando wget -m -k -E. I file risultanti hanno nomi nella forma foo.php? Bar.html. Apache indovina tutto dopo il? è una stringa di query, c'è un modo per dirgli di ignorare il? come delimitatore stringa di query (e vedi foo.php? bar.html come file richiesto e non foo.php)?C'è un modo per far sì che Apache fornisca i file con il punto interrogativo nel loro nome?

per risparmiare un viaggio in wget pagina di manuale:
-m: specchio in modo ricorsivo
-E:? Foo.php bar diventa foo.php bar.html
-k: convertire i collegamenti a pagine (foo. php? bar ora si collega a foo.php? bar.html all'interno di tutte le pagine in modo che vengano visualizzate correttamente)

+0

A quale scopo? Hai davvero un file chiamato foo.php? Bar.html sul tuo filesystem? O è un problema con i registri? Qualcos'altro? – symcbean

+0

Sì, c'era una serie di file sul filesystem con nomi foo.php? Bar.html. Erano il risultato della bandiera di Wget -E. – ldrg

risposta

4

Uscire dal? come% 3F fa il trucco?

3

Apache v1 utilizzato per gestirli, tuttavia v2 no.

L'ho fatto usando mod_rewrite. Il suggerimento di Nathans sotto forma di codice:

RewriteEngine On 

# Convert ? -> %3F in queries and add .html to the end of the filename 
RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^(.*)$ /$1\%3F%{QUERY_STRING}.html [L,NE] 

# An addition for *.php files without question mark in its name, adding html to the end of the filename 
RewriteRule ^(.*?)\.php$ $1.php.html 
Problemi correlati