使用 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