我迁移到新域名,现在使用.PHP而不是经典.ASP。 我成功设置了.htaccess,将所有旧的.ASP请求重定向到.PHP请求。但是,无法获得重定向的根默认文档。
这是我的.htaccess文件的一个例子。
RewriteEngine on
RedirectMatch ^(.*).asp http://newdomain.com$1.php
# RewriteRule ^(.*)$ http://newdomain.com/$1
使用.htaccess看起来如上所述(第二行注释掉),请求
http://olddomain.com
只显示旧域名。但深层文件可以按照我的意愿工作。例如。请求
http://olddomain.com/somefile.asp
将转到
http://newdomain/somefile.php
如果我取消注释第二行,root现在可以正确重定向,但其他一切都搞砸了。例如。请求
http://olddomain.com/somefile.asp
只会改写为:
http://newdomain/somefile.asp
(而不是.php)
所以我希望第1行优先,只有第2行才能应用
http://olddomain.com
我调查并发现可能在第1行末尾添加[L]是我的答案。但是,当我这样做时,我得到500 - 内部服务器错误。
有什么想法吗?
答案 0 :(得分:1)
您将RedirectMatch
mod_alias
规则与mod_rewrite
规则混合在一起。试试这个:
RewriteEngine on
RewriteRule ^(.+?)\.asp$ http://newdomain.com/$1.php [L,NC,R=302]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=302]