这是一个双重问题:正确的答案将转到“如何在PHP中执行”,解释是否有任何优势,如果可能的话也会计算。
我只是好奇,因为我真的不知道,我在网页上看到了很多。
编辑:我不知道技术名称,但是例如在Stackoverflow上:
“http://stackoverflow.com/posts/edit/522452
”是我的意思“文件夹”(以前在问题标题中使用的术语)。
答案 0 :(得分:6)
如果您指的是/posts/edit/522452
- 样式的网址,而不是/posts.asp?action=edit&postid=522452
- 样式的网址(或其在后端转换的内容),这通常是通过网址重写器完成的,例如为mod_rewrite
。该URL的规则可能如下所示:
RewriteRule ^/posts/(\w+)/(\d+) /posts.asp?action=\1&postid=\2
这种URL的两个主要优点是:
在PHP中,您可以通过$_GET['action']
和$_GET['postid']
访问这些选项,就像浏览器要求重写的表单一样。
答案 1 :(得分:2)
要使用此类网址,您必须执行以下三个步骤:
告诉您网络服务器,这些请求应该重定向到您的PHP脚本。使用Apache,您可以使用mod_rewrite module来执行此操作:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule !^index\.php$ index.php [L]
此指令将每个与文件系统中的文件不匹配的请求重定向到index.php
。
让您的脚本解析这些网址:
$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']); $segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/')); var_dump($segments);
这可能是解析网址路径并获取每个路径段的最简单方法。
在输出中使用此网址。 (简单)
答案 2 :(得分:1)
用于搜索引擎优化目的,缓存和可读性的部分,正如其他人所指出的,我想补充一点,文件夹式参数也是用户用参数“玩”的动机。例如,在Stackoverflow上,当按标签过滤时,通常会手动编辑URL,而不是查找相应的按钮并单击它。
答案 3 :(得分:0)
优点是可读性,可能在搜索引擎中有更好的位置。
如果您使用的是Apache,可以通过mod_rewrite
实现此目的。在PHP中,您还可以查看预定义的全局变量 - 我认为$_SERVER['REQUEST_URI']
有效,但可能会有更好的变体。
当使用普通PHP而不重写时,如果您正确配置服务器,那么您也可以从脚本的文件名中删除.php
,从而仍然可以获得“漂亮”的URL。
答案 4 :(得分:0)
有几个原因,但主要是:
SEO目的。搜索引擎通常会在“?”之后忽略任何内容问号标记,因此会留下非索引页面,甚至更糟糕的是,根本没有索引。
可读性:
www.somesite.com/products/devices/keyboards/20,asc
www.somesite.com/products/devices/keyboards/20,asc.html
看起来比:
更好www.somesite.com?show=products&cat=devices&sub_cat=keyboards&sort=asc&items=20
缓存。
有关如何在Apache中执行此操作的信息: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html