Перенаправление URL с помощью Python / Django / Mod-Rewrite - PullRequest
0 голосов
/ 04 октября 2010

Я пытаюсь настроить перенаправление URL для сайта вопросов и ответов, который я настраиваю для ремонта лодок. Я хочу, чтобы boatrepaired.com пошел к www.boatrepaired.com. Я, как правило, парень php, поэтому я немного запутался с python и т. Д., Используемым OSQA. Я добавил это в свой файл Apache Conf ...

<Directory /opt/OSQA/>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^boatrepaired\.com [NC]
RewriteRule ^(.*)$ http://www.boatrepaired.com/$1 [L,R=301]
</Directory>

Несколько работает, отправив boatrepaied.com на ... www.boatrepaired.com/osqa.wsgi/

Если я уберу 1 доллар в строке 5, он будет отлично работать, за исключением того, что перенаправит всех обратно на первую страницу. Любая помощь будет оценена.

Спасибо

Chris

Ответы [ 3 ]

0 голосов
/ 04 октября 2010

Почему бы не исправить это полностью в apache:

<VirtualHost ..>
    ServerName boatrepaired.com

    Redirect permanent / http://www.boatrepaired.com/ 
</VirtualHost>

<VirtualHost ..>
    ServerName www.boatrepaired.com

    ... basic wsgi / django config ...
</VirtualHost>

Таким образом, отдельные vhosts для обоих доменов с постоянными перенаправлениями с «неправильного» на правильный Он будет работать для всех путей в домене, а не только /

0 голосов
/ 25 февраля 2013

Если вы хотите использовать перезапись apache, у вас возникла проблема, связанная со строкой правила перезаписи, которая неправильно распаковывала URL-адрес. Django требует более сложного регулярного выражения, чем примеры, приведенные на сайте Apaache. Например, для wsgi вы можете сделать это, чтобы перенаправить http://example.com на http://www.example.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)django.wsgi(.*)$ http://www.example.com$2 [R=301,L]

где $ 2 - это второе совпадение регулярного выражения, которое является частью, которую вы хотите добавить на свой www.example.com.

0 голосов
/ 04 октября 2010

OSQA основана на Django, и Django может автоматически сделать это за вас (я уверен, что по умолчанию это включено для OSQA).

Если нет, добавьте этот параметр в модуль настроек Django:

Если PREPEND_WWW - True, URL-адреса, которые Отсутствие ведущих "www." будет перенаправлены на тот же URL с ведущий «www.» ведущий «www.»

И убедитесь, что django.middleware.common.CommonMiddleware включен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...