我正在开发一个 CMS,我想使用用户友好的 URL 而不是查询字符串。
例如:
mysite.com/cat_1 => mysite.com/cat_1/itme_1
代替
mysite.com/?cat=1 => mysite.com/?item=1
我应该如何实现这个?任何标准方式?
我的想法是使用半动态页面并使用用户友好的使用查询字符串的动态页面的 URL 生成静态快照。
我正在开发一个 CMS,我想使用用户友好的 URL 而不是查询字符串。
例如:
mysite.com/cat_1 => mysite.com/cat_1/itme_1
代替
mysite.com/?cat=1 => mysite.com/?item=1
我应该如何实现这个?任何标准方式?
我的想法是使用半动态页面并使用用户友好的使用查询字符串的动态页面的 URL 生成静态快照。
这是通过使用 .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
您想在.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 服务器中启用(大多数共享托管服务提供商已启用它)
仅使用 PHP 无法实现此功能。您需要为您的 HTTP 服务器配置 URL 重写,这会将用户友好的 URL 转换为您的脚本可以理解的查询字符串。在 Apache 的情况下,您应该查看mod_rewrite
,通常可以通过.htaccess
文件进行配置。
您可以使用像 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
我希望这会有所帮助。
问候。
使用 asp.net mvc 您可以免费获得它;)但说真的,我认为 PHP 有一个 Web 引擎(代码点火器),它也提供高级路由。此外,您可以使用一些Apache 黑魔法来扮演自己的角色