Se un sito utilizza il file .htaccess per riscrivere l'URL per es. migliore SEO. È possibile scoprire qual è l'URL "reale"?
Se un sito utilizza il file .htaccess per riscrivere l'URL per es. migliore SEO. È possibile scoprire qual è l'URL "reale"?
Questo non è possibile a meno che tu non conosca la regola di riscrittura. In alcuni casi l'accesso diretto al file "reale" è vietato interamente.
Oltre a questo puoi provare a utilizzare DirBuster con un elenco di directory personalizzato, ad esempio un elenco creato dagli urti amichevoli. Essendo hacker, sappiamo tutti come scrivere codice, quindi questo è piuttosto banale.
Non sono sicuro di quale sia la tua domanda. Supponiamo che tu abbia una semplice regola di riscrittura come reindirizzare il contenuto da http://www.example.com/old.html
a http://www.example.com/descriptive-directory/new.html
qualcosa del tipo:
RewriteRule ^old.html$ http://www.example.com/descriptive-directory/new.html [R=301,L]
Quindi il browser web di un utente invia una richiesta http GET a http://www.example.com
per recuperare old.html
:
GET /old.html HTTP/1.1
Host: www.example.com
Il server web lo rileva nelle regole di riscrittura e invia una risposta http dal server come:
HTTP/1.1 301 Moved Permanently
Location: http://www.example.com/descriptive-directory/new.html
e il tuo browser recupera qualsiasi contenuto sia a http://www.example.com/descriptive-directory/new.html
come se avessi digitato originariamente l'URL riscritto.
Quindi qual è la tua domanda? Presumibilmente, conosci (e puoi facilmente registrare) gli indirizzi web che il tuo browser ha richiesto prima di essere riscritto. Per lo meno è possibile acquisire le richieste GET seguendo lo stream TCP con uno strumento come wireshark.
Sai dove ti ha inviato la regola di reindirizzamento; ad es., la posizione è ora visualizzata nel tuo browser web. Se hai accesso ai log di apache dal lato del server web, vedrai qualcosa di simile:
127.0.0.1 - - [2/Feb/2012:12:36:17 -0400] "GET /old.html HTTP/1.0" 301 315 "-" "Mozilla/5.0"
127.0.0.1 - - [2/Feb/2012:12:36:17 -0400] "GET /descriptive-directory/new.html HTTP/1.0" 200 1702 "-" "Mozilla/5.0"
anche se potresti facilmente visualizzare la configurazione di Apache per trovare le regole di riscrittura effettive.
Nota: nessuno di questi ha nulla a che fare con dove il contenuto è memorizzato sul server web. Potrebbe non esserci alcuna directory chiamata descriptive-directory
o file chiamati new.html
o old.html
sul server web. L'intera risposta http da una richiesta a http://www.example.com/descriptive-directory/new.html
potrebbe essere presa dal server Web e quindi restituire una pagina html scritta in modo dinamico. Ad esempio, il seguente semplice codice webpy può essere eseguito per fungere da server Web senza che esistano file html.
# call this file silly_website.py
import web
urls = (
'/descriptive-directory/new.html', 'new',
)
class new(object):
def GET(self):
return "<html><head><title>Hello</title></head><body>World! from new</body></html>"
app = web.application(urls, globals())
if __name__ == '__main__':
app.run()
che potrebbe quindi essere eseguito come python silly_website.py [your_ip]
e si dispone di un server Web in esecuzione che restituirà una pagina Web molto semplice per una richiesta a /descriptive-directory/new.html
. Pertanto non esiste un modo generico per scoprire dove il contenuto restituito dal server Web è effettivamente memorizzato sul server web (anche in relazione alla directory root del server web).
Leggi altre domande sui tag apache