mod_rewrite con spazi negli URL
-
03-07-2019 - |
Domanda
Devo impostare alcune RewriteRules per reindirizzare un URL che contiene uno spazio. Ho provato questo:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
... ma non funziona. Se si inserisce uno spazio anziché% 20, viene generato un errore del server interno 500. Come faccio ad aggiungere uno spazio?
Soluzione
Prova a mettere un \ davanti al tuo spazio per evitarlo.
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Altri suggerimenti
Puoi semplicemente sfuggire allo spazio con un \
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
Se vuoi evitare la complessità della fuga da ogni spazio (ad es. se prevedi di generare automaticamente questo file), puoi semplicemente usare le virgolette:
RewriteRule "^article/with spaces.htmlRewriteRule "^article/with spaces.html<*>quot; "/article/without_spaces.html" [R=301,L]
quot; /article/without_spaces.html [R=301,L]
Inoltre, queste citazioni possono essere utilizzate per racchiudere qualsiasi argomento atteso:
<*>RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]
La prima opzione sostituisce uno spazio mentre la seconda sostituisce% 20 nell'URL codificato.
Ah, ho trovato una soluzione: usa lo stile regex per mostrare uno spazio:
RewriteRule ^article/with\sspaces.html$ ...
Tuttavia, sospetto che questo corrisponderebbe anche a tutti gli altri caratteri degli spazi bianchi (schede, ecc.), ma non credo che sarà un grosso problema.