4

可能重复:
在 php 中使用用户友好的 seo
代码 ingniter 中的自定义路由

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

例如:

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

代替

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

我应该如何实现这个?任何标准方式?

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

4

5 回答 5

3

这是通过使用 .htaccess 来修改 URL 发送到客户端的方式来实现的。或者正如其他人所说,美化 URL。以下是一些文章链接,可帮助您开始了解mod_rewrite实现此功能所需的规则。

http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls/

http://www.roscripts.com/Pretty_URLs__a_guide_to_URL_rewriting-168.html

于 2012-12-05T02:35:06.860 回答
2

您想在.htaccess内部重写您的 URL 并将它们适当地路由到您的应用程序。

这是一个特定的.htaccess示例,可以满足您的需求:

RewriteEngine on
RewriteRule ^cat_([0-9]*) /?cat=$1 [N,QSA]
RewriteRule ^item_([0-9]*) /?item=$1 [N,QSA]

只需将上述内容放在.htaccess您的根网络文件夹中的一个文件中,您就可以开始使用了。

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

于 2012-12-05T02:32:13.783 回答
1

仅使用 PHP 无法实现此功能。您需要为您的 HTTP 服务器配置 URL 重写,这会将用户友好的 URL 转换为您的脚本可以理解的查询字符串。在 Apache 的情况下,您应该查看mod_rewrite,通常可以通过.htaccess文件进行配置。

于 2012-12-05T02:32:57.107 回答
1

您可以使用像 Codeigniter 这样的框架:http: //ellislab.com/codeigniter

并审查:http ://ellislab.com/codeigniter/user-guide/general/urls.html

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

.htaccess 与 Codeigniter:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L]    
</IfModule>

然后你可以使用:

example.com/class/function/ID

我希望这会有所帮助。

问候。

于 2012-12-05T02:34:47.960 回答
1

使用 asp.net mvc 您可以免费获得它;)但说真的,我认为 PHP 有一个 Web 引擎(代码点火器),它也提供高级路由。此外,您可以使用一些Apache 黑魔法来扮演自己的角色

于 2012-12-05T02:36:00.287 回答