如何手动创建友好URL? (PHP)

时间:2010-03-22 19:25:51

标签: php url webpage

如何手动创建友好网址? (PHP) 所以我创建了简单的php文件,其中echos请求字符串。现在它的格式为echo.php?string=bla+bla+bla&font=times 我希望看到它像echo/bla+bla+bla/times如何做这样的事情(不使用外部库)?

6 个答案:

答案 0 :(得分:5)

这通常使用mod_rewrite Apache扩展来完成。在.htaccess文件中,您可以输入如下内容:

RewriteEngine On
RewriteRule ^echo/(.+?)/(.+)$ echo.php?string=$1&font=$2 [L]

第一行激活mod_rewrite。第二个设置regular expression以将匹配该模式的请求路由到您想要的PHP文件。

答案 1 :(得分:3)

您必须使用apache服务器中的Rewrite engine mod_rewrite

答案 2 :(得分:2)

要将echo.php转换为echo,您需要为您的网络服务器使用重写工具。如果您正在运行Apache,mod_rewrite是王道。

对于其余部分,您只需使用regex解析$_SERVER['REQUEST_URI']。您也可以使用mod_rewrite执行此部分,但如果不是一个选项,则可以直接使用PHP。

答案 3 :(得分:2)

与404处理程序的想法类似,使用非常简单的RewriteRule,您可以轻松地将URL重写管理移动到PHP,这对您来说可能更容易:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . rewrite.php [L]

rewrite.php中,您有一系列RegEx URL模式。这些可用于匹配当前URL(使用$_SERVER['REQUEST_URI'])并将URL的一部分移交给真实文件。然后可以将参数放入$_GET数组中,并且可以包含正确的文件。

例如,数组可能如下所示:

$rules = array(
    array(
        'articles/view/([0-9]+)',
        'articles.php?id=$1'
    ),
    array(
        'articles/delete/([0-9]+)',
        'articles.php?id=$1&action=delete'
    ),
);

答案 4 :(得分:1)

查看在新的Zend Framework项目中生成的.htaccess文件。您可以在没有框架的其余部分的情况下使用它,也可以将其用作您自己的URL重写方法的示例。

答案 5 :(得分:0)

通过mod_rewrite重写URL的替代方法,只需将php文件设置为404错误处理程序即可。该文件可以分析URL并确定应如何处理它。

 $path_parts = explode('/', $_SERVER['PATH_INFO']);
 echo $path_parts[0]. ', '.$path_parts[1].' font';

出于性能原因,您不希望将apache配置为不向PHP发送某些文件类型(即gif,jpg,png等)以进行处理。

虽然您可以做很多不同的事情,如回复中所述,但如果不调整网络服务器中的配置,则无法执行此操作。