2013-02-24 20 views
0

我们正在建立一个网站,用户为了浏览网站的内容登录(类似于Facebook和Twitter的使用),我们的网站的导航是创建一个PHP的网站具有用户友好的导航

的问题是完全搞砸了:

  • 当用户打开该网站,他是:sitename.com
  • 当用户登录项,位置的变化:sitename.com/login_success.php
  • 当用户使用导航栏,位置改变到:sitename.com/login_success.php#page2(AJAX是用来改变在div内容)

相比于实(URL):

  • 用户loged式:sitename.com
  • 用户不loged式:sitename.com
  • 用户导航到fr IEND搜索:sitename.com/search
  • 用户导航到设置:sitename.com/settings

像Facebook这样的网站为什么会有这么干净的网址?他们是如何做到的呢?我想创建一个干净的网站,用干净/用户友好的URL(没有#?&=) - 我从哪里开始?我们是否需要使用任何框架(yii,zend等)?

回答

2

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

例如,这是如何改变sitename.com/login_success.php#page2sitename.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] 

我不太肯定,去年正则表达式匹配,但我希望这可以让你在正确的轨道上!

0

他们使用mod_rewrite和类似的工具来清理它们的URL。

mod_rewrite在Apache上可用。该IIS等价物被命名为URL Rewrite。

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

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

你不需要使用特殊的框架来得到这个工作,但它有助于缓解这一进程,因为许多框架有这个功能内置。

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

1

我相信大量的编码是在你的情况下完成的。所以现在切换到像yii或zend这样的框架是不明智的,因此这个决定应该早些进行。

检查how to simplify the url

你可以使用Apache web服务器的mod_rewrite。