我使用 Phurl网址缩短程序。
有一个很好的用户界面来输入新的缩短网址。效果很好。
但我现在想使用相同的域来托管我的wordpress网站。因此,htaccess指出所有内容都将“.php”重定向为“别名”作为参数:
RewriteRule ^([a-zA-Z0-9_-]+)$ redirect.php?alias=$1
所以,如果我http://example.com/tt指向http://example.com/article-about-time-travel,那么“tt”将被传递给redirect.php,数据库中会有一个条目转为301到新的网址。
但如果它不在数据库中,
像 example.com/about 之类的东西,这是我的wordpress网站中的一个页面,我希望将其传递给wordpress。
但我不知道该怎么做。我不认为将这个逻辑放在htaccess中是可能的,因为可以有新的缩短网址和新的wordpress页面以及其他重写。
我的问题是:我不完全理解在wordpress中重写是如何工作的,所以我无法弄清楚如何只传递url以便可以通过wordpress将其重写为有用的东西。
我尝试使用header()函数但没有成功(主要是得到了) 无限重定向)。
任何想法???
感谢所有人。
编辑:这是我的.htaccess<IfModule mod_rewrite.c>
RewriteEngine on
RewriteOptions MaxRedirects=2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9_-\w#]+)$ redirect.php?alias=$1
</IfModule>
答案 0 :(得分:0)
我试图建议实现简单的include()
。
按原样保留RewriteRule
,并通过加载WordPress调度程序(rewrite.php
)脚本修改现有的index.php
。
<?php
// --rewrite.php-- (keep yours unchanged)
if ($r = db("SELECT url FROM shortener WHERE alias=?", $_GET->text["alias"])) {
header("Location: $r[url]");
exit;
}
// Fall through to WordPress if nothing matched:
unset($_GET["alias"]);
include("./index.php");
?>
忽略上面的代码,保持你的rewrite.php原样,然后只追加最后两行。只需确保header()
仅屏蔽http_redirect()
/ exit
调用,您的附加逻辑仍会运行。
用当前请求调用WordPress(没有internel / external重定向)。 WP可能会使用REQUEST_URI
来确定请求哪个静态页面。