Redirect 如何将所有php请求重定向到不同的子域

Redirect 如何将所有php请求重定向到不同的子域,redirect,apache2,subdomain,Redirect,Apache2,Subdomain,我有一个用rails重写的应用程序。旧的应用程序是用php编写的 我需要将所有php请求重定向到一个子域old.example.com(我已经将我的旧应用程序放在那里运行),以便旧链接仍然可以工作。我相信所有的链接中都有一个“.php”,而我的新URL中没有一个是这样的。因此,它可以用作重定向的条件 我计划使用ApacheRedirectMatch。比如: RedirectMatch \.php http://old.example.com 应该很接近。我相信。我只是不知道如何将请求路径传递给

我有一个用rails重写的应用程序。旧的应用程序是用php编写的

我需要将所有php请求重定向到一个子域old.example.com(我已经将我的旧应用程序放在那里运行),以便旧链接仍然可以工作。我相信所有的链接中都有一个“.php”,而我的新URL中没有一个是这样的。因此,它可以用作重定向的条件

我计划使用ApacheRedirectMatch。比如:

RedirectMatch \.php http://old.example.com
应该很接近。我相信。我只是不知道如何将请求路径传递给重定向规则


或者,如果有人对如何执行此操作有更好的想法?

使用Apache mod rewrite,您可以使用以下方法:

RewriteEngine On
RewriteBase /
RewriteRule ^.*\.php.*$ http://old.example.com/index.php [R=301,NC]
如果您想在重定向URL中实际插入他们试图访问的页面:

RewriteEngine On
RewriteBase /
RewriteRule ^/?(.*)\.php.*$ http://old.example.com/$1.php [R=301,NC]
$1
将在括号中插入与正则表达式匹配的任何内容

对于GET参数:

RewriteEngine On
RewriteBase /
RewriteRule ^/?(.*)\.php(.*)$ http://old.example.com/$1.php$2 [R=301,NC]

使用Apache mod rewrite,您将使用以下命令:

RewriteEngine On
RewriteBase /
RewriteRule ^.*\.php.*$ http://old.example.com/index.php [R=301,NC]
如果您想在重定向URL中实际插入他们试图访问的页面:

RewriteEngine On
RewriteBase /
RewriteRule ^/?(.*)\.php.*$ http://old.example.com/$1.php [R=301,NC]
$1
将在括号中插入与正则表达式匹配的任何内容

对于GET参数:

RewriteEngine On
RewriteBase /
RewriteRule ^/?(.*)\.php(.*)$ http://old.example.com/$1.php$2 [R=301,NC]

我发现Apache2中有一个REQUEST_URI变量。所以我需要将其添加到重定向url。这样做的语法可能是什么?我尝试了
RedirectMatch permanent^.*\.php.*$http://old.example.com%{REQUEST_URI}
,但它没有工作。所以我按照Alex W的建议使用了重写引擎。我发现Apache2中有一个REQUEST_URI变量。所以我需要将其添加到重定向url。这样做的语法可能是什么?我尝试了
RedirectMatch permanent^.*\.php.*$http://old.example.com%{REQUEST_URI}
,但它没有工作。所以我按照Alex W的建议使用了重写引擎。如果url中也有一些GET参数呢?我认为这些解决办法不会包括这些问题。但是可以在.php?@Mika为GET参数更新后包含第二个(.*)。您是对的,它们可以包含在第二对括号中。在本文中,我了解到,
RewriteBase
应该只在.htaccess文件中定义。我将把它放在服务器配置文件的
标记中。我是否应该排除
RewriteBase
?@Mika可以排除该指令。如果url中也有一些GET参数呢?我认为这些解决办法不会包括这些问题。但是可以在.php?@Mika为GET参数更新后包含第二个(.*)。您是对的,它们可以包含在第二对括号中。在本文中,我了解到,
RewriteBase
应该只在.htaccess文件中定义。我将把它放在服务器配置文件的
标记中。我是否应该排除
RewriteBase
?@Mika可以排除该指令。