php 将文件夹下的页面重定向到不同的域

php 将文件夹下的页面重定向到不同的域

使用 php,如何将文件夹下的所有页面重定向到不同的域?

当前站点:

http://www.example.org/dept
http://www.example.org/dept/stuff
http://www.example.org/dept/more
http://www.example.org/dept/more/stuff

新网站:

http://www.example-too.org/pets/stuff
http://www.example-too.org/pets/more
http://www.example-too.org/pets/more/stuff

我已经了解了如何重定向单个页面:

<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.example-too.org/pets/more/stuff" );
?>

但是如何将其应用于数十个页面,而无需为每个页面创建 php 重定向?

[编辑]我知道使用 Web 服务器配置(apache mod_rewrite)和/或 .htaccess 是处理此类多个重定向的最佳方式,但这些选项对我来说不可用。

谢谢。

答案1

不幸的是,除非已经使用一个 PHP 脚本来处理所有这些 URL,否则您需要为每个 URL 创建一个新的 PHP 脚本。

但是,您可以编写一些脚本来自动化该过程。

例如,如果它是 Linux 服务器,并且你能够运行 shell 脚本,那么类似这样的操作就可以工作(在文档文件夹,或同等文件夹):

#!/bin/bash

# Add folders here
FOLDERS=stuff more more/stuff    

for folder in $FOLDERS; do
    {
        echo '<?php'
        echo 'header("HTTP/1.1 301 Moved Permanently");'
        echo "header(\"Location: http://www.example-too.org/pets/$folder\");"
    } > dept/$folder/index.php
done

如果您无法运行 shell 脚本,您可以将脚本转换为 PHP。

答案2

值得一提的是,更好的方法是通过 Web 服务器配置或 .htaccess 中的“重定向”命令

答案3

谢谢 Mikael,我稍微修改了你的脚本以处理我的 html 页面而不是文件夹:

#!/bin/env bash

DEST=http://www.example-too.org/pets
FILES=`find . |grep \.html$ -`

for xfile in $FILES; do
    file=${xfile:2}         # strip leading ./
    file=${file%%.html}.php # change extension from .html to .php
                            # comment out preceeding line to overwrite source .html
    {
        echo '<?php'
        echo 'header("HTTP/1.1 301 Moved Permanently");'
        echo "header(\"Location: $DEST/$file\");"
        echo '?>'
    } > $file
    echo created $file
done

相关内容