我是PHP的初学者,有一件事我无法找到答案,或者我只是不知道要搜索什么。
我制作了一个PHP脚本,该脚本使用GET参数显示数据库中的用户信息。
该网址看起来像这样http://127.0.0.1/user-info.php?userid=testuser,我想要做的是使该网址看起来像这样http://127.0.0.1/user-info/testuser。这怎么可能,是通过.htaccess还是使用php以及如何完成的?
谢谢。
答案 0 :(得分:1)
当然可以,重写通常是在协议级别进行的,所以在http服务器内部,它与if fun(start) * fun(end) > 0:
raise 'Endpoints in binarySearchIter should yield opposite signs.'
引擎无关:
php
此规则在http服务器的主机配置或动态配置文件(“ .htaccess”样式文件)中同样起作用。为此,显然必须启用http服务器的重写模块。而且,如果您决定使用动态配置脚本,那么该脚本也必须得到支持和启用。
如果使用上述规则收到“内部服务器错误”(http状态500),则很可能是您运行了非常旧版本的apache http服务器。在这种情况下,将RewriteEngine on
RewriteRule ^/?user-info/(.+)$ /user-info.php?userid=$1 [END]
标志替换为END
标志,在这种情况下也应该起作用,尽管这取决于您拥有的其他重写规则。无论如何,您都会在http服务器错误日志文件中的未知L
标志上找到明确的提示。
还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。
答案 1 :(得分:-1)
您可以从zend Express中获取.htaccess文件,该文件具有您需要的所有内容-https://github.com/zendframework/zend-expressive-skeleton/blob/master/public/.htaccess。它将所有请求传递到index.php文件,您可以在其中进行进一步的路由,然后进行请求处理。
作为路由器,我建议使用FastRoute(https://github.com/nikic/FastRoute)。还请看composer-它是php开发人员的必备工具。
答案 2 :(得分:-1)
我认为您需要类似的东西,请尝试一下。只需将url(index.php替换为user-info.php)
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]
OR
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]