Domanda

Abbiamo un sito Web creato da Django. E non ci sono problemi quando si accede seguente URL sull'ambiente di lavoro locale:

http://site/tags/c%23/

" c% 23 " è il codice url di " c # " ;, che funziona bene localmente. Ma dopo averlo distribuito sul server di hosting Bluehost (apache + fastcgi), questo URL è stato risolto in un nuovo indirizzo come questo:

http://site/t/tags/c/ 

È troppo strano. Probabilmente non è un problema di Django, ma ha qualcosa a che fare con La riscrittura dell'URL di Apache. Se hai qualche idea o suggerimento su come risolvere questo problema, faccelo sapere. Grazie in anticipo.

Ecco il file .htaccess che può essere considerato:

AddHandler fcgid-script .fcgi 
#AddHandler fastcgi-script .fcgi 
#AddHandler application/cgi .fcgi 
#AddHandler cgi-script .fcgi 
RewriteEngine On 
RewriteBase / 
#static file setting 
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(static/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(dispatch.fcgi) 
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L] 

e il file dispatch.fcgi:

#!/home/***/python/bin/python 
import sys, os 
# Add a custom Python path. 
sys.path.insert(0, "/home/***/python") 
sys.path.insert(0, "/home/***/working/Django-1.0") 
os.chdir("/home/***/working/Django-1.0/project") 
os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 
from django.core.servers.fastcgi import runfastcgi 
runfastcgi(["method=threaded", "daemonize=false"]) 

UPDAET: Se ciò è causato dalle impostazioni in httpd.conf, come posso sovrascrivere il file .htaccess mentre non ne ho il permesso?

È stato utile?

Soluzione

Solo alcuni suggerimenti prima di andare oltre:

Hai provato con altri caratteri come uno spazio (% 20) o un carattere ASCII accentato? Inoltre, hai provato a mettere altri personaggi dopo% 23 (oltre alla barra) per vedere se sono anche spogliati?

Un'ipotesi potrebbe essere che, poiché # viene considerato come un'ancora nella pagina corrente, # e tutto ciò che viene dopo verranno rimossi nella riscrittura.

Altri suggerimenti

Dovrei essere d'accordo con la prima risposta - e senza l'accesso alla configurazione di Apache, potresti essere sfortunato. L'uso di "CSharp" o qualcosa del genere potrebbe essere la strada da percorrere.

# ha un significato speciale in URI, uguale a / o? lo fa. Hai questo problema con altri simboli? Alla fine, non dovresti comunque usare un segno # in un URI, a meno che non ti riferisca a un'ancora sulla pagina.

http://httpd.apache.org/docs/2.2/rewrite /rewrite_guide.html

Leggi la sezione di riscrittura dell'ancora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top