使用用户友好的导航创建一个php网站

时间:2013-02-24 12:48:05

标签: php navigation

我们正在建立一个网站,用户必须登录才能查看网站内容(类似于Facebook和Twitter使用的内容)

问题是我们网站的导航完全搞砸了:

  • 当用户打开网站时,他位于: sitename.com
  • 当用户登录时,位置更改为: sitename.com/login_success.php
  • 当用户使用导航栏时,位置更改为: sitename.com/login_success.php#page2 (AJAX用于更改div内容)

与facebook(url)相比:

  • 用户已加入: sitename.com
  • 用户没有进入: sitename.com
  • 用户导航至朋友搜索: sitename.com/search
  • 用户导航至设置: sitename.com/settings

为什么像facebook这样的网站有如此干净的网址?他们是如何做到的呢?我想创建一个干净的网站,其中包含干净/用户友好的网址(不包含#?以及&=) - 我从哪里开始?我们需要使用任何框架(yii,zend等等)吗?

3 个答案:

答案 0 :(得分:2)

是的,你必须使用mod-re-write。

例如,这是将sitename.com/login_success.php#page2更改为sitename.come/page2的方式:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>

#first, what is the original request
RewriteCond %{THE_REQUEST} /login_success.php#page([0-9]*)
# now use regex to redirect to the clean url structure
RewriteRule ^$ /page%1? [R=301,L,NE]
# now make the clean url serve the content from the ugly one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page([0-9]+) /login_success.php#page$1 [L]

我不太确定最后一次正则表达式比赛,但我希望这能让你走上正轨!

答案 1 :(得分:1)

我相信你的情况下会进行大量的编码。所以现在切换到像yii或zend这样的框架是不明智的,这个决定应该提前做好。

检查how to simplify the url

您可以使用apache web server的mod_rewrite。

答案 2 :(得分:0)

他们使用mod_rewrite和类似工具来清理他们的网址。

Apache上提供了

mod_rewrite。 IIS等效项名为URL Rewrite。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

http://www.iis.net/downloads/microsoft/url-rewrite

您不需要使用特殊框架来实现此功能,但它有助于简化流程,因为许多框架都内置了此功能。

想到的是Wordpress。 Wordpress使您可以很好地控制其工作方式,而无需过多地触摸配置文件。