如何手动创建友好网址? (PHP)
所以我创建了简单的php文件,其中echos请求字符串。现在它的格式为echo.php?string=bla+bla+bla&font=times
我希望看到它像echo/bla+bla+bla/times
如何做这样的事情(不使用外部库)?
答案 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等)以进行处理。
虽然您可以做很多不同的事情,如回复中所述,但如果不调整网络服务器中的配置,则无法执行此操作。