Ho cercato su Google e StackOverflow per la risposta a questa domanda, ma il fatto che io non sappia molto di .htaccess non mi aiuta a decidere quali risposte corrette per la mia situazione sono, quindi sto chiedendo qui..htaccess RewriteCond dove URI non contiene dominio
La mia situazione è che ho diversi siti che utilizzano la stessa directory fisica della loro radice sul server.
Questo funziona correttamente, ma volevo assicurarmi che ogni sito non potesse accedere ad altre immagini ecc. Dal browser, a meno che non si trovassero nel dominio corretto.
Attualmente ho una struttura di file come questo:
/resources/{resource}/{full_domain_name}
Così, per esempio www.domain.co.uk
avrebbe una struttura come questa:
http://www.domain.co.uk/resources/images/www.domain.co.uk/some_image.jpg
Ma se www.domain_2.co.uk
esiste utilizzando la stessa directory fisica per il sito radice quindi possono guardare le risorse di altri domini dal proprio dominio, come questo:
http://www.domain_2.co.uk/resources/images/www.domain.co.uk/some_image.jpg
Questo non è un grosso problema dato che non ci sono assolutamente informazioni riservate memorizzate in queste directory, ma è più di un fastidio e preferirei che gli utenti non fossero in grado di farlo (non che qualcuno abbia fatto finora).
Ho provato a mettere un file .htaccess nella directory/risorse, ma mi sono bloccato con le espressioni regolari, ecc
Io fondamentalmente voglio fare in modo che l'URI contiene il nome dominio corrente altrimenti reindirizzare ad un 403 pagina di errore.
Questo è ciò che mi si avvicinò con:
RewriteCond %{REQUEST_URI} !^(/resources/[^/]*/%{HTTP_HOST})(.*)$
RewriteRule ^(.*)$ /error/403.php
Il motivo ho messo nel bit [^/]
è perché ci sono diverse cartelle, per esempio:
/resources/images/{full_domain_name}
/resources/scripts/{full_domain_name}
/resources/stylesheets/{full_domain_name}
Qualcuno mi potrebbe aiutare con questi condizioni?
Qualsiasi aiuto sarebbe apprezzato.
Qual è il risultato della regola corrente? Sembra che funzioni, eccetto che non è necessario alcun '()' attorno a '/ resources/[^ /] * /% {HTTP_HOST}. * ' –
@Michael Attualmente se sono su www.domain.co .uk e vai su www.domain.co.uk/resources/stylesheets/www.domain.co.uk/style.css per esempio mi reindirizza sempre al file /error/403.php. Quando rimuovo la regola .htaccess trova il file come dovrebbe normalmente. –
In realtà non è necessario l'intero '% {REQUEST_URI}' rappresentato nell'espressione regolare. Puoi semplicemente associare l'http_host 'RewriteCond% {REQUEST_URI}! ^. +% {HTTP_HOST}' –