0

我们正在建立一个网站,用户必须登录才能查看网站内容(类似于 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 这样的网站有如此干净的 URL?他们是怎么做到的呢?我想创建一个干净的网站,带有干净/用户友好的 URL(没有#or?&and =) - 我从哪里开始?我们是否需要使用任何框架(yii、zend 等)?

4

3 回答 3

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]

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

于 2013-02-24T13:05:42.510 回答
1

我相信在你的案例中已经完成了大量的编码。所以现在不建议切换到像 yii 或 zend 这样的框架,这个决定应该更早做出。

检查如何简化 url

您可以使用 apache web 服务器的 mod_rewrite。

于 2013-02-24T12:53:13.867 回答
0

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

mod_rewrite在 Apache 上可用。IIS 等效项名为 URL 重写。

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

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

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

想到的一个是Wordpress。Wordpress 让您可以很好地控制它的工作方式,而无需过多地接触配置文件。

于 2013-02-24T12:52:33.700 回答