[英]URL shortener processing URLs with PHP, then if alias doesn't exist, fall through to wordpress
我正在使用Phurl URL縮短器 。
有一個不錯的用戶界面,用於輸入新的縮短的網址。 效果很好。
但是我現在想使用相同的域來托管我的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中,因為可能會有新的縮短的url和新的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>
我試圖建議的是將fallthrough實現為簡單的include()
。
保持您的RewriteRule
rewrite.php
,並通過加載WordPress調度程序( index.php
)腳本來修改現有的rewrite.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(無內部/外部重定向)。 WP可能使用REQUEST_URI
來確定請求了哪個靜態頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.