让apache和django添加一个尾部斜杠
My/train目录别名为httpd.conf中的脚本: WSGIScriptAlias/train/some path/./django.wsgi 除了一个问题外,它工作得很好。如果用户转到/train(没有尾随斜杠),它不会将用户重定向到/train/,而只会给用户提供正确的页面。这是一个问题,因为这样,当没有使用尾随斜杠访问该页面时,该页面上的相对链接会导致错误的位置 这是怎么解决的让apache和django添加一个尾部斜杠,django,apache,wsgi,trailing,Django,Apache,Wsgi,Trailing,My/train目录别名为httpd.conf中的脚本: WSGIScriptAlias/train/some path/./django.wsgi 除了一个问题外,它工作得很好。如果用户转到/train(没有尾随斜杠),它不会将用户重定向到/train/,而只会给用户提供正确的页面。这是一个问题,因为这样,当没有使用尾随斜杠访问该页面时,该页面上的相对链接会导致错误的位置 这是怎么解决的 谢谢。将您的urlconf设置为接受train/为有效,然后使train指向/train/我使用类似的方法
谢谢。将您的urlconf设置为接受
train/
为有效,然后使train
指向/train/我使用类似的方法重定向/train到/train/,我所做的是重定向所有URL,而不是以/to/train/结尾
<Location "/train">
Order deny,allow
Allow from all
RewriteEngine on
RewriteRule !^.*/$ /train/ [R]
</Location>
WSGIScriptAlias /train /some-path/../django.wsgi
命令拒绝,允许
通融
重新启动发动机
重写规则!^.*/$/列车/[R]
WSGIScriptAlias/train/some path/./django.wsgi
如果您只需要从/train
重定向到/train/
,而不是从没有尾随斜杠的每个子目录重定向,那么使用RedirectMatch指令有一个更简单的解决方案:
RedirectMatch ^/train$ /train/
你是在询问设置吗?事实证明我实际上在寻找一个Apache解决方案,因为当前当用户转到/train时,没有任何东西被转发到我的Django代码。谢谢您的评论。谢谢,但是Django无法判断用户是去训练还是去训练/因为模式“^$”检测到了这两个,因为Apache服务器只将/train/(*)重定向到Django。我猜解决方案必须在httpd.conf中,而不是在Django中,至少如果我想使Django代码独立于包含的目录(也就是说,如果我想更改目录名,在httpd.conf中将/train/更改为其他名称应该是唯一要做的事情)!非常感谢你!