Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将Django根目录重定向到管理面板_Python_Django_Apache_Django Admin_Mod Wsgi - Fatal编程技术网

Python 将Django根目录重定向到管理面板

Python 将Django根目录重定向到管理面板,python,django,apache,django-admin,mod-wsgi,Python,Django,Apache,Django Admin,Mod Wsgi,我正在尝试将Django站点根目录重定向到Django管理面板,我已经基本上安装并运行了它。但是,我注意到,除非项目URL中有一个尾随斜杠,否则页面上的链接不包括项目文件夹,而是尝试在站点根目录中查找应用程序 假设我有一个项目foo,还有一个应用程序bar。如果您访问http://server/foo/(带尾随斜杠),一切正常,页面上的链接转到http://server/foo/bar。但是,如果有人访问http://server/foo,生成的链接转到http://server/bar相反,它

我正在尝试将Django站点根目录重定向到Django管理面板,我已经基本上安装并运行了它。但是,我注意到,除非项目URL中有一个尾随斜杠,否则页面上的链接不包括项目文件夹,而是尝试在站点根目录中查找应用程序

假设我有一个项目
foo
,还有一个应用程序
bar
。如果您访问
http://server/foo/
(带尾随斜杠),一切正常,页面上的链接转到
http://server/foo/bar
。但是,如果有人访问
http://server/foo
,生成的链接转到
http://server/bar
相反,它会生成404错误

如果我将
WSGIScriptAlias
设置为指向
/foo/
,而不是
/foo
,那么如果我导航到
/foo
,就会出现404错误。我试图在Apache conf中使用Redirect强制使用尾部斜杠,但最终生成了一个递归重定向(
http://server/foo//////...
)。我还没有尝试使用.htaccess文件,但我怀疑可能会发生同样的情况

我在
url.py
中尝试了同样的方法,但是:

url(r'^$', redirect_to, {'url': '/'}), # goes to server root http://server/
url(r'^$', redirect_to, {'url': 'foo/'}), # goes to http://server/foo/foo
url(r'^$', redirect_to, {'url': '/foo/'}), # infinite redirect
我还尝试在所有Django URL中添加斜杠,如下所示:

url(r'^(.*)/', include(admin.site.urls))
但它与项目根文件夹中的任何内容都不匹配(尽管如果您导航到该应用程序,它似乎可以正常工作)

我将Apache 2.2与mod_wsgi一起使用,以下是配置:

Alias /static "C:/DJANGO~1/apps/django/django/contrib"

<Directory 'C:/DJANGO~1/apps/django/django/contrib'>
  Order allow,deny
  Allow from all
</Directory>

WSGIScriptAlias /foo "C:/Djangostack/apps/django/scripts/django.wsgi"

<Directory 'C:/Djangostack/apps/django/scripts'>
  Order allow,deny
  Allow from all
</Directory>

我已确保将
APPEND\u SLASH
设置为True,但它在根项目文件夹中似乎不起作用。

请尝试在
设置.py中将其设置为True。我有一个类似的问题,这为我解决了它。它应该默认为True,但我必须显式设置。

为什么
/foo
会被重定向到
/bar
?这种重定向发生在哪里?它不是真正的
/foo
被重定向到
/bar
-相反,页面上生成的URL转到
/bar
,而不是
/foo/bar
。不幸的是,这没有帮助-除了项目根之外,它在任何地方都可以工作。这对哪个
URL.py
不起作用?注意:只有当url与没有斜杠的模式不匹配时,它才会附加斜杠。我用
r'^'
r'^(.*)/'
r'^(.*)/$”
尝试了它,但仍然没有成功。我怀疑这意味着配置需要在Apache中进行,或者在其他一些系统范围的Django设置中进行。嗯,我不明白为什么会用
url(r'^$',redirect_to,'/foo/')
进行无限重定向。我这样做是为了从根目录重定向到
/blog/
,效果很好。您能在OP中发布完整的
url.py
吗?无限重定向似乎发生了,因为它不是从根文件夹到子文件夹,而是简单地向根文件夹附加一个斜杠-即使附加了斜杠,它仍然会匹配
r'^$'
。我还意识到我在OP中使用了错误的语法-
redirect\u to
需要字典,而不是字符串。不过,我在我的
url.py
中正确地使用了它。
urlpatterns = patterns('',
  url(r'^', include(admin.site.urls)),
)