例如,facebook如何为其设置页面创建其网址 “https://www.facebook.com/settings”以及Reddit如何制作这样的subreddit网址: http://www.reddit.com/r/askscience/
我正在网站上工作,我想将其整合到简单且用户友好的导航中。在PHP中执行此操作的最简单方法是什么?
答案 0 :(得分:1)
有很多框架可以简化这一过程并为流程添加许多功能,但我会向您展示一个基本方法:
首先,您可以使用htaccess
将所有请求路由到一个文件:
//.htaccess - route all requests through index.php
//don't route the request if the url is for a file or directory
RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|css|js|html)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
//all requests are sent to the file "index.php"
RewriteRule ^.*$ index.php [L]
然后,您可以使用php解析请求URL并相应地响应它:
$pieces = preg_split('-/-', $_SERVER['REQUEST_URI'], NULL, PREG_SPLIT_NO_EMPTY);
$page = $pieces[0];
include "pages/{$page}.php";
显然,这只是一个非常的基本示例。结果如下:
//site.com/some-place
include "pages/some-place.php
答案 1 :(得分:0)
你需要使用apache的mod_rewrite。
您可以在.htaccess规则中设置简单规则,该规则将网址中的每个网段映射到php中的特定GET变量。
以下是一个例子:
RewriteEngine on
RewriteBase /
RewriteRule ^([\ A-Za-z0-9-_,]+)/?$ /index\.php?mode=$1 [NC,L]
RewriteRule ^([\ A-Za-z0-9-_,]+)/([\ A-Za-z0-9-_,]+)/?$ /index\.php?mode=$1&slug=$2 [NC,L]
这会使url / p / home映射到index.php?mode = p& slug = home
答案 2 :(得分:0)
你问的有些事情有点超出你通常用普通的'vanilla'PHP做的事情。
如果您使用的是框架,例如Code Igniter,您可以设置一个控制器来处理该URL,并收集您需要的任何数据并根据该数据加载您的视图。
您更有可能使用Apache url重写来实现此目的(如果您的网络服务器是Apache。如果没有,则Node.js或Google App Engine以及其他人都有类似的角色。)