2010-03-17 60 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

相关问题