Utilizzare un'espressione regolare anziché una stringa.
app.get(/^\/(.+)/, function(req, res) {
var href = req.params[0]; // regexp's numbered capture group
});
Notare che non è possibile utilizzare la sintassi della stringa (app.get('/:href(.+)')
) perché Express consente solo un piccolo sottoinsieme di espressioni regolari nelle stringhe di percorso, e utilizza queste espressioni regolari come un controllo condizionale per quel particolare componente del percorso. Non acquisisce il contenuto corrispondente nel condizionale, né consente di confrontare i componenti (parti dell'URL separate da barre).
Ad esempio:
app.get('/:compa([0-9])/:compb([a-z]/')
Questo percorso corrisponde solo se il primo componente (compa) è una singola cifra, e il secondo componente (compb) è una singola lettera a-z.
'/:href(.+)'
dice "corrisponde al primo componente solo se il contenuto è qualsiasi cosa", il che non ha molto senso; questo è comunque il comportamento predefinito. Inoltre, se si esamina the source, si vedrà che Express sta forzando effettivamente il punto in quel condizionale per essere letterale.
Per esempio, app.get('/:href(.+)')
compila in realtà in:
/^\/(?:(\.+))\/?$/i
notate che il vostro .
era sfuggito, quindi questo percorso corrisponderà solo uno o più periodi.
Sto provando 'app.get ('/: href (. +)', ...' senza fortuna. Cosa mi manca? –
Non penso che tu possa passare una regexp all'interno di una stringa di percorso Devi passare un oggetto regexp, vedi [la mia risposta] (http://stackoverflow.com/a/14915608/201952). – josh3736
Questo: http://stackoverflow.com/a/12334009/8446 implicherebbe che tu può ... –