Regex htaccess重写错误地将URL附加到mod_wsgi config文件路径

Regex htaccess重写错误地将URL附加到mod_wsgi config文件路径,regex,django,apache,.htaccess,mod-wsgi,Regex,Django,Apache,.htaccess,Mod Wsgi,我目前正在迁移域[old_domain]->[new_domain] 当我谈到htaccess规则和/etc/httpd/conf/httpd.conf中的配置文件时,问题出现了: httpd.conf AllowOverride All 起初,我找不到将上面的允许.htaccess重写规则放在哪里,我仍然担心我可能会错误地允许所有这些规则 我试着把它放在类似的地方,但没有效果: <Directory "/path/to/django/project/"> AllowOve

我目前正在迁移域[old_domain]->[new_domain]

当我谈到htaccess规则和/etc/httpd/conf/httpd.conf中的配置文件时,问题出现了:

httpd.conf

AllowOverride All
起初,我找不到将上面的允许.htaccess重写规则放在哪里,我仍然担心我可能会错误地允许所有这些规则

我试着把它放在类似的地方,但没有效果:

<Directory "/path/to/django/project/">
    AllowOverride All
</Directory>
已发送URL

http://old_domain.com/news/
收到的URL

http://new_domain.com/apache/production.wsgi/news/
快到了。。。但有人能提出为什么会发生这种情况吗? 我真的不想在新的\u域端剥离/apache/production.wsgi/(除非这是预期的?)

提前谢谢


编辑:使用django的HttpResponsePermanentRedirect包括一个快速修复。这种做法不好吗?

如果要在django文件夹中使用rewrite指令,则需要启用overides。否则,它们将被忽略:

希望这能完成重写的技巧:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} !^newdomain\.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

一定要在你重写的域中划出句点。在正则表达式中。表示使用HttpResponsePermanentRedirect“匹配所有”

,表示每次重定向都会命中django应用程序。最佳做法是在发生重定向之前尽量减少接触的系统。Django在堆栈中更深一层,因此返回重定向响应的额外开销也更大。显然,如果您的流量很小,那么开销几乎不值得考虑……编辑您的问题,并提供有关如何安装wsgi应用程序的mod_wsgi配置。您使用的是WSGIScriptAlias还是Alias/AddHandler。另请参阅django重定向中有关重写的说明,这些重定向位于旧服务器上,该服务器不再使用,因此额外命中也不是什么大问题。我会在可以的时候粘贴到WSGI配置中。谢谢roja。我来试试这个。我确实忘了划定时间。
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} !^newdomain\.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]