2010-03-25 3 views
4

Моего каталога/поезда псевдонимов к сценарию в httpd.conf по: WSGIScriptAlias ​​/ поезд /some-path/../django.wsgiделает апач и Джанго добавить замыкающую слэш

И это хорошо работает, за исключением одной проблемы. Если пользователь идет/тренируется (без косой черты), он не перенаправляет его на/train /, а просто даст ему правильную страницу. Это проблема, потому что таким образом относительные ссылки на этой странице приводят к неправильному месту, когда для доступа к ней не использовалось косой чертой.

Как это можно решить?

Спасибо.

+0

вы спрашиваете о HTTP: //docs.djangoproject.com/en/dev/ref/settings/#append-slash? –

+0

Оказывается, я на самом деле ищу решение Apache, потому что в настоящее время, когда пользователь переходит на/train ничего, перенаправляется на мой код Django. Спасибо за ваш комментарий. – user302099

ответ

6

Я использую что-то подобное для перенаправления/поездов в/поезд /, то, что я делаю, перенаправляет весь URL-адрес, чем не заканчивается/to/train /.

<Location "/train"> 
    Order deny,allow 
    Allow from all 
    RewriteEngine on 
    RewriteRule !^.*/$ /train/ [R] 
</Location> 

WSGIScriptAlias /train /some-path/../django.wsgi 
+0

Наконец-то решение! Большое спасибо! – user302099

0

Укажите свой urlconf, чтобы принять train/ как действительный вместо этого, затем введите train, приводящий к generic redirect в /train/.

+0

Спасибо, но Django не может сказать, пошел ли пользователь тренироваться или тренироваться/потому что оба обнаруживаются по шаблону «^ $», потому что сервер Apache перенаправляет только /train/(.*) в Django. Я предполагаю, что решение должно быть в httpd.conf, а не в Django, по крайней мере, если я хочу сделать свой код Django независимым от содержащего каталога (то есть - change/train/to some other name в httpd.conf должен быть единственное, что нужно сделать, если я хочу изменить имя каталога). – user302099

6

Если вам просто нужно перенаправить из /train в /train/ и не из каждого подкаталога без слэш, то есть более простое решение с помощью директивы RedirectMatch:

RedirectMatch ^/train$ /train/ 
Смежные вопросы