我想改變我們目前在CMS內提供網關頁面系統的方式。網關頁面的意思是通過.htaccess中的重寫規則將不存在的URL映射到頁面,例如,網關頁面系統
RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1
這讓人們創建短鏈接到CMS頁雜誌廣告等問題,此方法是,它依賴於訪問的.htaccess。我更喜歡一種代碼級別的方法,但在我看來,沒有重寫規則 - 將會調用404錯誤。有什麼辦法可以防止這種情況或解決這個問題嗎?
我想改變我們目前在CMS內提供網關頁面系統的方式。網關頁面的意思是通過.htaccess中的重寫規則將不存在的URL映射到頁面,例如,網關頁面系統
RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1
這讓人們創建短鏈接到CMS頁雜誌廣告等問題,此方法是,它依賴於訪問的.htaccess。我更喜歡一種代碼級別的方法,但在我看來,沒有重寫規則 - 將會調用404錯誤。有什麼辦法可以防止這種情況或解決這個問題嗎?
你可以在你的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
我喜歡這個選項,我認爲它仍然落在任何.htaccess規則下降 - 不正確的語法= 500錯誤? – robjmills 2010-05-04 15:45:33
我不確定,您必須進行測試。你可以嘗試返回null,看看規則如何處理。對不起,我有點生疏! – 2010-05-04 16:20:43
您的.htaccess的任何問題?爲什麼依賴它是一個問題? – Ben 2010-05-04 15:39:17
它是一個問題,如果新的重定向需要動態添加和不正確的語法導致500錯誤 – robjmills 2010-05-04 15:40:55