簡體   English   中英

使用PHP處理URL縮短器的URL,然后如果不存在別名,請使用wordpress

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM