2012-04-18 18 views
11

Quando si crea un sito HTML statico, è possibile impostare l'URL di base in modo tale <base url="http://localhost:8888/mysite" />. Presumibilmente quando inserisci, per esempio, un'immagine, puoi farlo dall'URL di base come <img src="/img/logo.png" />, che equivale a <img src="http://localhost:8888/mysite/img/logo.png" />Come posso creare collegamenti relativi alla radice in un sito statico?

Il mio problema è che questi collegamenti relativi non funzionano quando sposto il sito, che è un dolore perché sto cercando di condividerlo con qualcuno su Dropbox. Ho pensato che potevo semplicemente indirizzare l'url di base a <base url="http://dl.dropbox.com/u/xxxxxxxx/mysite" />, ma i link alle immagini sono qui: <img src="http://dl.dropbox.com/img/logo.png" /> invece dell'URL di base completo che ho impostato in testa.

Perché è questo?

+0

perché non elimini quella strana cosa '' base URL '' e sposta semplicemente la cartella principale ...? (Dal momento che non è un sito dinamico, non lo capisco ... l'URL di base è quello in cui risiede il tuo file corrente ...) –

+0

Questo è quello che ho pensato anch'io, ma se rimuovo il tag base e trascino il mio sito web su una cartella arbitraria come il desktop e passa il mouse su un link, lo cerca in 'http: // localhost/assets/img'. Dovrebbe essere qualcosa come '~/Desktop/website_folder/assets/img'. –

+0

Indipendentemente dal livello di gerarchia nel sito, desidero poter richiamare un'immagine da/assets/img/foo.png'. Se considero ogni pagina come una propria base, dovrò creare collegamenti relativi e dovermi preoccupare di questa situazione: '../../../../../ assets/img/foo.png' . –

risposta

15

perdono la porta / per renderlo un URL relativo:

<img src="img/logo.png" /> 

Ci sono 3 tipi di URL:

  • Fully Qualified, per esempio http://example.org/path/to/file

  • Assoluto, ad es. /path/to/file (supponendo che il collegamento provenga da qualsiasi pagina nel dominio example.org)

  • Relativo, ad es. path/to/file (supponendo che il link deriva dalla radice (/) "cartella" o c'è un URL di base http://example.org/) o to/file (supponendo che la connessione è all'interno della "cartella" 'percorso' o l'URL di base è http://example.org/path/)

+0

L'utilizzo degli URL relativi diventa molto più difficile quando si crea un sito con una gerarchia complessa. A seconda della pagina, dovrei usare 'percorso/su/file' o' ../ percorso/su/file' o '../../ percorso/su/file', che vorrei evitare. Sto usando [Middleman] (http://middlemanapp.com) come un generatore di siti statici per inserire i link per il navigatore principale, quindi devono cercare il nome su ogni pagina del sito. –

+3

Ho sempre sentito url con una barra iniziale ('/') chiamata _root urls relativi_. Inoltre, c'è _protocol relativo_ (a volte chiamato schema relativo) urls: '

2

Sono consapevole del fatto che sono un po 'in ritardo rispetto al gioco su questo, ma in questo caso dovresti davvero utilizzare i tag di risorsa Rails invece di HTML grezzo.

Per esempio, invece di utilizzare:

<img src="/img/logo.png" /> 

si dovrebbe usare:

<%= image_tag 'logo.png' %> 

Partendo dal presupposto che:

  1. Stai utilizzando file .erb per le pagine di origine
  2. Hai impostato il percorso della risorsa immagine su /img/ in yo ur file di config.rb

In alternativa, si potrebbe fare riferimento CSS con:

<%= stylesheet_link_tag 'file.css' %> 

file Javascript possono essere inclusi con:

<%= javascript_include_tag 'file.js' %> 

Dal Middleman permette di controllare o meno attivi si fa riferimento relativamente (rileggendo alcune righe in config.rb), l'uso dei tag delle risorse Rails ha molto più senso di quelle statiche HTML. Consiglio vivamente di cambiare se non lo hai già fatto. Se hai ulteriori domande su questi tag o sulla sintassi ERB, non esitare a chiedere qui!

Problemi correlati