2010-05-04 94 views
0

我想改變我們目前在CMS內提供網關頁面系統的方式。網關頁面的意思是通過.htaccess中的重寫規則將不存在的URL映射到頁面,例如,網關頁面系統

RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1 

這讓人們創建短鏈接到CMS頁雜誌廣告等問題,此方法是,它依賴於訪問的.htaccess。我更喜歡一種代碼級別的方法,但在我看來,沒有重寫規則 - 將會調用404錯誤。有什麼辦法可以防止這種情況或解決這個問題嗎?

+0

您的.htaccess的任何問題?爲什麼依賴它是一個問題? – Ben 2010-05-04 15:39:17

+0

它是一個問題,如果新的重定向需要動態添加和不正確的語法導致500錯誤 – robjmills 2010-05-04 15:40:55

回答

4

你可以在你的htaccess中使用rewritemap。它所做的就是引用外部文件/腳本,將傳入的uri傳遞給它,並重新獲取重寫的uri。

在你的.htaccess

RewriteMap shorts prg:/path/to/map.php 

在你的PHP文件map.php

#!/path/to/php 
$keyboard = fopen("php://stdin","r"); // get data from stdin 
while (1) { 
    $line = trim(fgets($keyboard)); 
    // fetch rewrite for line and echo out 
} 

PHP文件傳遞短URL並返回 - 根據您的邏輯 - 完整的URL

+0

我喜歡這個選項,我認爲它仍然落在任何.htaccess規則下降 - 不正確的語法= 500錯誤? – robjmills 2010-05-04 15:45:33

+0

我不確定,您必須進行測試。你可以嘗試返回null,看看規則如何處理。對不起,我有點生疏! – 2010-05-04 16:20:43