我目前正在迁移域名[old_domain] - > [NEW_DOMAIN]。
当我在/etc/httpd/conf/httpd.conf中找到htaccess规则和配置文件时出现了问题:
的httpd.conf
AllowOverride All
最初我找不到上面的内容,允许.htaccess重写规则工作,我仍然担心我可能会错误地允许它。
我试过把它放在类似但不起作用的地方:
<Directory "/path/to/django/project/">
AllowOverride All
</Directory>
一旦我确实将.htaccess文件重写为工作(使用以下内容),URL开始返回奇怪的内容。
django项目目录中的.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} !^old_domain.com/$ [NC]
RewriteRule ^(.*)$ http://new_domain.com/$1 [L,R=301]
发送的网址
http://old_domain.com/news/
收到的网址
http://new_domain.com/apache/production.wsgi/news/
差不多......但是有谁能说明为什么会发生这种情况? 我真的不想在new_domain端剥离/apache/production.wsgi/(除非这是预期的吗?)
提前致谢。
编辑:使用django的HttpResponsePermanentRedirect进行了一次快速修复。这是不好的做法吗?
答案 0 :(得分:2)
如果要在django文件夹中使用rewrite指令,则需要启用覆盖。否则他们将被忽略:
http://httpd.apache.org/docs/current/mod/core.html#allowoverride
希望这可以解决重写问题:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^newdomain\.com
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
请务必分隔RewriteCond域中的句点。在正则表达式中,。表示“全部匹配”