.htaccess 已读取但重定向不起作用

.htaccess is read but redirect not working

我正在使用 apache + django + mod_wsgi 作为服务器。我的目标是将非 www url 重定向到 www url.

我启用了mod_rewrite:当执行命令Module rewrite already enabled时,我有

Module rewrite already enabled

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/

</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 文件位于 /var/www/<site-name>/app 目录中:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]

如果我在 .htaccess 中放入随机代码,该站点将抛出 500 error,但重定向永远不会起作用(它的行为方式如下):


很好,我可以使用@Finbarr 的回答来实现我想要的。但是后来我仍然对导致上述重定向行为的原因感兴趣。

就我个人而言,当您可以访问 conf 文件时,我不会修改 .htaccess 文件来执行此操作。我会为重定向创建一个单独的虚拟主机条目,并让主站点虚拟主机保持正常。典型的重定向在 conf 文件中看起来像这样。

<VirtualHost *:80>
ServerName www.yoursite.com
Redirect 301 / http://yoursite.com/
</VirtualHost>