2010-03-17 63 views
1

該網站運行在一個虛擬主機上,我們無法訪問htaccess文件。該Web服務器是Apache。我想重寫URL。例如:原來的URL: www.mydomainname.com/en/piecework/piecework.php?piecework_id=11 預期網址:piecework.mydomainname.com/en/11在不使用htaccess的情況下在PHP中重寫URL

怎麼辦呢?

+0

假設我可以使用mod_write,該如何實現? – Steven 2010-03-17 08:48:38

回答

2

不幸的是沒有htaccess或apache配置訪問,你將無法做到這一點。發現你的主機有問題,或者找到一個新主機。大多數廉價的共享主機在我的經驗中提供了mod_rewrite。

+0

如何用mod_rewrite做到這一點? – Steven 2010-03-17 04:20:02

+0

mod_rewrite需要.htaccess或主要的Apache配置文件。 – alex 2010-03-17 05:16:32

-1

其實你可以做物理文件夾/文件(所以被訪問的路徑實際的物理存在),然後重定向/在那些妥善處理 - 笨拙,但如果這是你唯一的選擇....

另一種可能性是看看你的主機是否會允許你至少有一個自定義的404錯誤文檔,然後根據REDIRECT_URL處理那裏的所有內容。

1

我見過人們令牌化的查詢字符串來完成(那種),你在說什麼,即:

domain.com/foo/bar/11 

中實際上是解釋爲:

domain.com/foo/bar/11.php?action=foo&query=bar 

但是你必須在物理目錄結構中創建這些語義。這是醜陋的,難以管理,並且使用mod_rewrite更容易完成。

可能有mod_rewrite啓用,here's a short tutorial讓你開始。

1

此代碼可能是你要找的: 用法: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