该网站运行在一个虚拟主机上,我们无法访问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