我有一个名为“wlatw.co”的域名(和.com)('哇!看看这个网站!'),让我和我的一些朋友缩短网址。我刚刚将它从一个处理一些粗略的javascript的慢速版本升级到一个超快速的PHP header()重定向。它曾经是这样的:“r.wlatw.co/alca”,但我更喜欢“wlatw.co/alca”。我希望.htaccess重定向丢失的页面,例如“/ alca”(因为它不存在于服务器上),重定向到“wlatw.co/redir.php?r=alca”,它将从中重定向。 (在引号之外加上逗号和句号,以免混淆某人:))
wlatw.co/ RedirectName = 404 重定向 redir.php?r = RedirectName 重定向 页面重定向到
a 重定向 b 重定向 c
a到b by .htaccess。从b到c由redir.php。
因此,除非有人知道使用htaccess读取XML的某种方式,否则我更喜欢这种方法!
..如果需要(或供有人经过参考)
<redirect>
<short>
<name>alca</name> <!-- like wlatw.co/alca -->
<creator>255.255.255.255</creator> <!-- ip address or username -->
<date>1/6/13</date> <!-- the date! -->
<time>10:52PM</time> <!-- the time! -->
<url>http://www.alcadesign.com/</url> <!-- where to go to -->
</short>
</redirect>
和
这是 redir.php
<?php
if(file_exists('redirects.xml')) {
$xml = simplexml_load_file('redirects.xml');
if(isset($_GET['r']) && $_GET['r'] != '' && !is_array($_GET['r'])) {
foreach($xml->short as $shorts) {
if($shorts->name == $_GET['r']) {
header('Location: '.$shorts->url);
break;
}
}
}
else {
header("refresh:2;url=http://www.wlatw.co/");
echo '<div align="center" style="font-weight: bolder; font-size: 24px;">Malformed URL</div><div align="center" style="font-weight: bolder; font-size: 16px;">Redirecting...</div>';
}
}
?>
与PHP有关,如果有人知道如何告诉foreach循环它是否成功并且回显
答案 0 :(得分:0)
你要做的事情并不像你期望的那样完成。
.htaccess
是Apache的一部分,它在PHP执行时完成了它的工作。没有办法回去重新加载页面.htaccess
。
如果您已经在PHP文件中,并且已经在$_GET['r']
中拥有了所需的内容,那么在确定XML中不存在该条目后,只需include('redir.php');
。
答案 1 :(得分:0)
似乎没有人回答正确的答案,所以我环顾四周并找到了这个备忘单: http://www.addedbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/
我为我的用法修改了“好看的网址”示例:
RewriteRule ^([A-Za-z0-9-]+)/?$ redir.php?r=$1 [L]