Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用户友好的URL而不是查询字符串?_Php_Url - Fatal编程技术网

Php 用户友好的URL而不是查询字符串?

Php 用户友好的URL而不是查询字符串?,php,url,Php,Url,可能重复: 我正在开发一个CMS,我想使用用户友好的URL而不是查询字符串 e、 g: mysite.com/cat_1=>mysite.com/cat_1/itme_1 而不是 mysite.com/?cat=1=>mysite.com/?item=1 我应该如何实现这一点?有标准的方法吗 我的想法是使用半动态页面,并使用使用查询字符串的动态页面的用户友好URL生成静态快照。您希望使用.htaccess在内部重写URL,并将它们适当地路由到应用程序 下面是一个具体的.htaccess示例,

可能重复:

我正在开发一个CMS,我想使用用户友好的URL而不是查询字符串

e、 g:

mysite.com/cat_1=>mysite.com/cat_1/itme_1

而不是

mysite.com/?cat=1=>mysite.com/?item=1

我应该如何实现这一点?有标准的方法吗


我的想法是使用半动态页面,并使用使用查询字符串的动态页面的用户友好URL生成静态快照。

您希望使用
.htaccess
在内部重写URL,并将它们适当地路由到应用程序

下面是一个具体的
.htaccess
示例,它可以满足您的需求:

RewriteEngine on
RewriteRule ^cat_([0-9]*) /?cat=$1 [N,QSA]
RewriteRule ^item_([0-9]*) /?item=$1 [N,QSA]
只需将上述内容放在根web文件夹中名为
.htaccess
的文件中,就可以了


请注意,如果apache服务器尚未启用(大多数共享主机提供商已启用),您可能必须在apache服务器中启用
mod rewrite

此功能不能仅使用PHP实现。您需要为HTTP服务器配置URL重写,这将把用户友好的URL转换为脚本可以理解的查询字符串。对于Apache,您应该研究
mod_rewrite
,它通常可以通过
.htaccess
文件进行配置。

您可以使用类似Codeigniter的框架:

和审查:

您需要激活
mod_rewrite
并创建文件
.htaccess

.使用Codeigniter的htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L]    
</IfModule>
我希望这会有帮助


注意。

这是通过使用.htaccess修改URL发送到客户端的方式来实现的。或者像其他人说的那样,美化URL。下面是一些文章链接,帮助您开始使用创建此函数所需的
mod_rewrite
规则


使用asp.net mvc,您可以免费获得它;)但严肃地说,我认为PHP有一个web引擎()也提供了高级路由。此外,您还可以使用一些

@MikeBrown来扮演自己的角色-不完全是。。。他不需要路由,只需要基本的URL重写。@jeroen-再说一遍,不是重复的。这是路由的另一个例子。这是URL重写,不涉及PHP。@虽然我同意,但我认为如果他在写CMS,他希望使用路由,而不是要求CMS管理员编辑.htaccess或muck with mod_rewrite来添加新路径。我认为OP是在寻求PHP解决方案(正如他标记的
PHP
),因此我知道wink和segue“但非常严肃”
example.com/class/function/ID