使用 Django 和 mod_wsgi 通过 httpd.conf 进行重定向

使用 Django 和 mod_wsgi 通过 httpd.conf 进行重定向

我正在尝试使用 Apache 的 Rewrite 模块在 Django 捕获请求之前重定向用户。我尝试了以下操作将用户从“test.php”重定向到“链接”页面

<VirtualHost 10.0.0.3>
   WSGIDaemonProcess mydomain.com processes=1 threads=15 display-name=$
   WSGIProcessGroup mydomain.com

   DocumentRoot "/home/james/www"
   <Directory "/home/james/www">
   Options +FollowSymlinks
   RewriteEngine On
   RewriteRule ^test.php links [NC,R=301,L]

   Order allow,deny
   Allow from all 
   </Directory> 

   WSGIScriptAlias / "/home/james/www/app.wsgi"

   ServerName mydomain.com

</VirtualHost>

这种方法不起作用(当导航到 mydomain.com/test.php 时,它不会将我重定向到确实存在的“链接”页面)。

有没有办法用 mod_wsgi 实现重写?

答案1

如果 mod_rewrite 规则编写正确且在正确的上下文中,它应该可以工作。它可能会失败,因为您在目录上下文中执行此操作,并且对该上下文的设置不正确。

但为什么不使用更简单的 RedirectPermanent 指令:

RedirectPermanent /test.php http://mydomain.com/links

看:

http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectpermanent

这应该在目录上下文之外并位于 VirtualHost 内的顶层。

相关内容