該網站運行在一個虛擬主機上,我們無法訪問htaccess文件。該Web服務器是Apache。我想重寫URL。例如:原來的URL: www.mydomainname.com/en/piecework/piecework.php?piecework_id=11 預期網址:piecework.mydomainname.com/en/11在不使用htaccess的情況下在PHP中重寫URL
怎麼辦呢?
該網站運行在一個虛擬主機上,我們無法訪問htaccess文件。該Web服務器是Apache。我想重寫URL。例如:原來的URL: www.mydomainname.com/en/piecework/piecework.php?piecework_id=11 預期網址:piecework.mydomainname.com/en/11在不使用htaccess的情況下在PHP中重寫URL
怎麼辦呢?
其實你可以做物理文件夾/文件(所以被訪問的路徑實際的物理存在),然後重定向/在那些妥善處理 - 笨拙,但如果這是你唯一的選擇....
另一種可能性是看看你的主機是否會允許你至少有一個自定義的404錯誤文檔,然後根據REDIRECT_URL處理那裏的所有內容。
我見過人們令牌化的查詢字符串來完成(那種),你在說什麼,即:
domain.com/foo/bar/11
中實際上是解釋爲:
domain.com/foo/bar/11.php?action=foo&query=bar
但是你必須在物理目錄結構中創建這些語義。這是醜陋的,難以管理,並且使用mod_rewrite更容易完成。
你可能有mod_rewrite啓用,here's a short tutorial讓你開始。
此代碼可能是你要找的: 用法:phpfile.php/en/11
注意:不需要mod_rewrite。
<?php
$DEFAULT_ACTION = 'badAction';
$pathInfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$pathParts = explode('/', substr($pathInfo, 1));
$action = isset($pathParts[0]) ? $pathParts[0] : $DEFAULT_ACTION;
if (function_exists($action)) {
$action($pathParts);
} else {
badAction();
}
function badAction($parts = null)
{
print 'The function specified is invalid.';
}
function en($parts)
{
$name = isset($parts[1]) ? $parts[1] : 'undefined';
$xml = new SimpleXMLElement('<message>Number: ' . $name . ' </message>');
header('Content_Type: text/xml');
print $xml->asXML();
}
?>
ps。我在'Professional PHP6'中找到了代碼:ISBN:978-0-470-39509-7
假設我可以使用mod_write,該如何實現? – Steven 2010-03-17 08:48:38