Django .htaccess已读取,但重定向不起作用
我正在使用apache+Django .htaccess已读取,但重定向不起作用,django,apache,.htaccess,mod-wsgi,Django,Apache,.htaccess,Mod Wsgi,我正在使用apache+django+mod_wsgi作为服务器。我的目标是将非wwwurl重定向到wwwurl 我启用了mod_rewrite:在执行已启用模块重写的命令时,我启用了 模块重写已启用 sites available中的site.conf读取 <VirtualHost *:80> # Admin email, Server Name (domain name), and any aliases ServerName www.<site-name>
django
+mod_wsgi
作为服务器。我的目标是将非www
url重定向到www
url
我启用了mod_rewrite
:在执行已启用模块重写的命令时,我启用了
模块重写已启用
sites available
中的site.conf
读取
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerName www.<site-name>.com
RedirectMatch ^http://<site-name>.com/(.*)$ http://www.<site-name>.com/$1
</VirtualHost>
<Directory /var/www/<site-name>/app>
AllowOverride All
Order allow,deny
Allow from all
Header set Access-Control-Allow-Origin "http://<site-name>.com"
</Directory>
如果我将随机代码放入.htaccess
,站点将抛出500错误
,但重定向永远不会工作(它的行为方式如下所示):
- 键入
site name.com
不会触发重定向李>
- 在
site name.com
下,单击链接(由reverse()
函数生成)将不会触发重定向李>
- 直接输入
site-name.com/morestuff
将触发重定向到www.site-name.com/morestuff
很好,我可以使用@Finbarr的答案来实现我想要的。但是我仍然对导致上述重定向行为的原因感兴趣。就我个人而言,当您有权访问conf文件时,我不会修改.htaccess文件来执行此操作。我将为重定向创建一个单独的virtualhost条目,并使主站点virtualhost保持正常。在conf文件中,典型的重定向如下所示
<VirtualHost *:80>
ServerName www.yoursite.com
Redirect 301 / http://yoursite.com/
</VirtualHost>
服务器名www.yoursite.com
重定向301/http://yoursite.com/
太好了,刚试过就行了!谢谢,并将标记为应答。您可能需要VirtualHost
中.com
的ServerAlias
,否则它甚至可能不会使用该VirtualHost
来处理非www主机名。相反,它可能由Apache配置中的第一个VirtualHost
处理,如果您有多个,那么它可能是另一个。无论哪种方式,我都会推荐已经给出的答案,即仅为重定向创建一个单独的VirtualHost
。@GrahamDumpleton:我以前有过,但我只是在发布问题之前删除了服务器别名。目前,我使用@Finbarr的答案,在这种情况下,site name.com
单独是一个VirtualHost
,因此可能不需要对该url使用别名。
<VirtualHost *:80>
ServerName www.yoursite.com
Redirect 301 / http://yoursite.com/
</VirtualHost>