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