2009-09-23 20 views
10

Dưới đây là các tệp cấu hình có liên quan, cũng tại http://dpaste.com/97213/.Chạy Django với tiền tố URL ("thư mục con") - Ứng dụng hoạt động, nhưng URL bị hỏng?

Cấu hình apache hiện đang hoạt động, vì truy cập 'example.com/' hiển thị cho tôi tệp index.html tôi đã đặt ở gốc tài liệu.

Tôi muốn phân phát các ứng dụng Django/tại tiền tố '/ d', vì vậy 'example.com/d/' sẽ tải ứng dụng mặc định, 'example.com/d/app3' sẽ tải ứng dụng khác, như được định cấu hình trong urls.py.

Phục vụ Django, tôi đang sử dụng mod_wsgi được đề xuất, trên Linux.

Hiện tại, tôi có thể truy cập ứng dụng Vé tại 'example.com/d', nhưng khi trang trí @login_required cố gắng gửi tôi đến trang đăng nhập, tôi được gửi đến 'example.com/accounts/login', thay vì 'example.com/d/accounts/login' được mong đợi.

Vì ứng dụng mặc định tải chính xác, tôi không chắc chắn số Tôi là làm sai ở đây hoặc nếu đây là lỗi trong Django khi tạo url.

Mọi đề xuất?

EDIT: Là một lưu ý, nếu tôi thay đổi dòng apache config: WSGIScriptAlias ​​/ d /home/blah/django_projects/Tickets/apache/django.wsgi để WSGIScriptAlias ​​//home/blah/django_projects /Tickets/apache/django.wsgi Ứng dụng, nhận xét và đăng nhập trong tất cả các công việc tốt. Ngay cả khi 'example.com/admin' tải quản trị viên, mặc dù tôi đã để lại phương tiện quản trị viên bị hỏng, do đó không có tệp định kiểu nào được tải.

--- Configs Thực hiện theo:

# 
# /home/blah/django_projects/Ticket/urls.py 
# 
from django.conf.urls.defaults import * 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^', include('ticket.urls')), 
    (r'^admin/', include(admin.site.urls)), 
    (r'^comments/', include('django.contrib.comments.urls')), 
) 


# 
# /home/blah/django_projects/Ticket/apache/django.wsgi 
# 
import os, sys 

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') 

sys.path.append('/home/blah/django_projects') 
sys.path.append('/home/blah/django_projects/Tickets') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'Tickets.settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 


# 
# /etc/apache2/sites-available/django_tickets_wsgi (apache conf) 
# 
NameVirtualHost * 
<VirtualHost *> 

    Alias /media /home/blah/django_projects/Tickets/media 


    WSGIScriptAlias /d /home/blah/django_projects/Tickets/apache/django.wsgi 
    WSGIDaemonProcess exmaple_com user=blah group=blah processes=1 threads=10 
    WSGIProcessGroup example_com 

    ServerAdmin [email protected] 
    ServerName example.com 

    DocumentRoot /var/www/ 

    <Directory /var/www/> 
     Options -Indexes FollowSymLinks -MultiViews -Includes 
     AllowOverride None 
     Order allow,deny 
     allow from all 
    </Directory> 

    ErrorLog /var/log/apache2/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog /var/log/apache2/access.log combined 
    ServerSignature Off 

</VirtualHost> 

Trả lời

7

Đây là một bản sao có thể có của Django Apache Redirect Problem, như rằng câu trả lời giải quyết vấn đề này.

Tôi cuối cùng chỉ vấp phải câu trả lời đó bằng cách mở hầu như tất cả các 'câu hỏi liên quan' ở đây, chỉ vì tuyệt vọng. Theo quan điểm của tôi, tôi nghĩ câu hỏi của tôi có một số từ "tìm kiếm thân thiện" có giá trị.

EDIT: Câu trả lời: (thông qua alex vasi)

Những điều cần thử:

  1. Thay đổi tên miền hiện tại để "yourdomain.tld/cflow" trong "các trang web" khuôn khổ. Thật dễ dàng khi sử dụng lệnh quản trị django hoặc dumpdata/loaddata manage.py.
  2. Có vẻ như trang web của bạn đang sử dụng trang trí đăng nhập. Trong trường hợp đặc biệt mà bạn có thể thêm vào settings.py:

    LOGIN_URL = '/ [prefix]/tài khoản/đăng nhập /'

+0

Vui lòng không xóa câu hỏi của riêng bạn (vì lý do bạn đã đề cập). Tôi tin rằng một quản trị viên có thể hủy xóa bài đăng của bạn, nhưng có lẽ họ sẽ không thể làm được điều đó tốt hơn. Nhưng xin vui lòng chấp nhận giải pháp của riêng bạn sau thời gian chờ đợi bắt buộc. –

2

trong url của bạn.py đổi tên urlpatterns thành base_urlpatterns; sau đó thêm định nghĩa followinig vào cuối cùng một tệp:

urlpatterns = patterns('', 
    '^', include(base_urlpatterns), # iff you wish to maintain the un-prefixed URL's too 
    '^your_prefix/', include(base_urlpatterns), 
) 
+7

Đó là loại fiddle không nên cần thiết và chắc chắn sẽ không khuyên bạn nên nó như nó ngụ ý sau đó có hai URL để cùng một nguồn lực, đó là thực hành xấu. –

Các vấn đề liên quan