Strano problema CSS/Apache
-
23-08-2019 - |
Domanda
Ho provato a installare ReviewBoard e sembra che tutto sia andato bene, in quanto riesco ad accedere al sito e alle funzionalità
Tuttavia, ho delle stranezze in cui nessun foglio di stile sembra essere applicato per qualche motivo.
Sospetto che potrebbe trattarsi di un problema di autorizzazioni su una cartella a cui non è possibile accedere o di qualche errore di configurazione di Apache che ho commesso.
Esiste qualche configurazione di Apache che potrebbe aver causato questo?
Qualcuno ha riscontrato problemi simili non solo per ReviewBoard?
Ulteriori informazioni:Sembra che Apache stia ricevendo la richiesta per i fogli di stile
- [20/maggio/2009:10:00:35 +0100] "GET /reviewboard/media/rb/css/common.css?1242747706 HTTP/1.1" 404 2512
[20/maggio/2009:10:00:35 +0100] "GET /reviewboard/media/rb/css/ie_hacks.css?1242747706 HTTP/1.1" 404 2514
[20/maggio/2009:10:00:36 +0100] "GET /reviewboard/media/rb/js/csshover2.htc?1242747706 HTTP/1.1" 404 2514
- [20/maggio/2009:10:00:36 +0100] "GET /reviewboard/media/rb/js/pngfix.htc?1242747706 HTTP/1.1" 404 2511
MODIFICARE:Osservando i log di accesso, il GET per il CSS è in realtà 404 poiché il percorso dovrebbe essere reviewboard/htdocs/media/rb/css/* (anche se c'è un alias nell'HTTP.conf che presumo si occupasse di questo.
MODIFICARE:Il file .htaccess contiene
<IfModule mod_expires.c>
<FilesMatch "\.(jpg|gif|png|css|js|htc)">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</FilesMatch>
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
MODIFICARE:
Le sezioni httpd.conf hanno questo aspetto
<VirtualHost *:8080>
ServerName FASKALLYRB
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs"
# Error handlers
ErrorDocument 500 /errordocs/500.html
ErrorDocument 404 /errordocs/500.html
# Serve django pages
<Location "/">
PythonPath "['C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/conf'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
SetEnv PYTHON_EGG_CACHE "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/tmp/egg_cache"
SetHandler mod_python
PythonHandler django.core.handlers.modpython
PythonAutoReload Off
PythonDebug Off
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
</Location>
# Serve static media without running it through mod_python
# (overrides the above)
<Location "reviewboard/media">
SetHandler None
</Location>
<Location "reviewboard/errordocs">
SetHandler None
</Location>
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs">
AllowOverride All
</Directory>
# Alias static media requests to filesystem
Alias reviewboard/media "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs/media"
Alias reviewboard/errordocs "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/reviewboard/htdocs/errordocs"
</VirtualHost>
Soluzione
L'URL per le direttive Posizione e Alias non può essere relativo e necessita di una barra iniziale.Quindi dovresti usare '/reviewboard/.......'.
FWIW, la direttiva PythonInterpreter non viene utilizzata per ciò che il tuo commento sembra indicare che pensi che faccia.
# Used to run multiple mod_python sites in the same apache
PythonInterpreter reviewboard_reviewboard
L'applicazione viene sempre eseguita all'interno della stessa istanza di Apache.Ciò che fa PythonInterpreter è consentirti di controllare quale sottointerprete Python all'interno di ciascun processo figlio del server Apache che esegue.In realtà è ridondante nel tuo caso, poiché lo stesso interprete secondario viene utilizzato per impostazione predefinita per tutte le applicazioni ospitate mod_python nello stesso VirtualHost.Tieni presente che ci saranno ancora più istanze dell'applicazione, in ciascuno dei processi figli del server Apache.
Altri suggerimenti
Si potrebbe fare un collegamento simbolico in Reviewboard chiamato 'media' che punta a htdocs / supporti forse.
In alternativa:
- mossa htdocs / media per ..
- o andare nel codice Reviewboard e modificare il codice di generazione url
- o se si è mod_rewrite installato è possibile reindirizzare le richieste al posto giusto