标签: friendly-url

foo.com/alice与foo.com/users/alice

为用户提供网站内容的友好网址当然很好.但是如何最好地做到这一点?像foo.com/users/alice这样的东西有很多优点,最重要的是你不会弄乱根命名空间.但我认为用户的简单性胜过所有这些.许多大型网站似乎都同意(友情,美味和flickr想到),这个问题是关于如何在服务器端实现这一点.

让我们假设alice的真实网址是foo.com/userpage?user=alice,如果有人试图浏览到不存在的用户页面(让我们说foo.com/bob),他们应该访问foo.com/createnew?user=bob .

当然,用户永远不应该看到上面那些丑陋的"真实"网址,只有foo.com/alice或foo.com/bob.请注意,根名称空间是共享的.例如,foo.com/help不应转换为foo.com/userpage?user=help.

大概是我要求一些简单的mod_rewrite规则,但也许有一些完全不同的方法,我没想到.无论如何,我认为记录这个常见问题的确定性或"最佳实践"解决方案会很好.

PS:请随意评论alice.foo.com或users.foo.com/alice等其他替代品的优点.

PPS:我想我已经看到这个问题在其他问题上有争议,但搜索似乎很棘手.指针欢迎!当然,除了可以使其更易于搜索的其他关键字.关键字:用户空间,全局命名空间,URL命名空间.

url mod-rewrite friendly-url namespaces url-rewriting

9
推荐指数
2
解决办法
1322
查看次数

使用mod_rewrite或像PHP这样的语言处理友好/干净/漂亮的URL是否更好?

我正在开发我的第一个体面的PHP网站,我对在应用程序中处理干净/友好/漂亮的URL的"正确方式"(假设有这样的事情)有点困惑.

我看到它的方式,有两个主要选项(我将使用简化的社交新闻网站作为例子):

1.使用mod_rewrite处理所有潜在的URL.这看起来与以下内容相似但不完全相同:

RewriteRule ^article/?([^/]*)/?([^/]*)/?([^/]*) /content/articles.php?articleid=$1&slug=$2
RewriteRule ^users/?([^/]*)/?([^/]*) /content/users.php?userid=$1&username=$2
RewriteRule ^search/?([^/]*)/? /content/search.php?query=$1
Run Code Online (Sandbox Code Playgroud)

2.将所有内容传递给某个处理程序脚本,让它担心细节:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) handler.php?content=$1
Run Code Online (Sandbox Code Playgroud)

显然,这是所有未经测试的"航空代码",但你明白了.

  • 这两种方式中的一种会比另一种方式慢得多吗?据推测,mod_rewrite较慢,因为我将被迫使用.htaccess文件.
  • 这两种方法都有严重的缺点吗?
  • 对于这类事情是否存在"最佳实践",或者每个开发人员都倾向于自己决定什么?我知道WordPress使用选项二(虽然当我调查他们是如何做的时候,它比它的价值更麻烦).

php apache mod-rewrite friendly-url url-rewriting

9
推荐指数
1
解决办法
1562
查看次数

模式重写; 在URL的末尾有/不带尾部斜杠?

我基本上尝试过下面的mode_rewrite规则.它最后使用斜杠,但是我想让它工作,无论它是否有一个尾部斜杠.基本上我希望它像这样,因为有些人认为它是正常的,最后有一个斜线而其他人不这样做,因此我希望它能够工作,无论它是否存在.

RewriteRule ^signup/register(.[^/]*) /signup/register.php [NC]
Run Code Online (Sandbox Code Playgroud)

基本上它会工作,http://localhost/signup/register/但如果我从最后删除/它会给出404错误.

.htaccess mod-rewrite friendly-url url-rewriting

9
推荐指数
3
解决办法
4万
查看次数

Laravel Slugs与Str :: slug

看看我的前端URL生成的Str :: slug,但只是想知道你们如何用路由等来实现它,例如,你们如何将http://www.example.com/courses/1更改为http ://www.example.com/courses/this-course

string url friendly-url slug laravel-4

9
推荐指数
2
解决办法
3万
查看次数

格式化数字ID的漂亮URL的最佳方法

好吧,让我们说我正在编写一个论坛应用程序,我想要漂亮的URL.但是,我的所有表都使用数字ID,因此我不确定格式化这些资源的URL的最佳方法.让我假装我正在尝试获取ID为123456的主题和标题这是一个论坛帖子.我已经看过它做了几个方面:

  1. www.example.com/topic/123456
  2. www.example.com/topic/this-is-a-forum-post
  3. www.example.com/topic/123456/this-is-a-forum-post

你会说哪一个,考虑所有的因素(包括搜索引擎优化),最佳的URL?

很抱歉,如果这个问题太模糊,但它似乎与编程有关,并且它不是非常开放式的,因为我只是想听听每种方法的优缺点.

url seo friendly-url url-rewriting

8
推荐指数
2
解决办法
1802
查看次数

日期范围的URL约定

在友好的URL中显示日期范围的公认惯例是什么?

例如,在时间跟踪应用程序中.我想使用更容易区分用户的东西,而不是使用数据库的主键来处理URL中的特定付费期.

http://www.mytimesheet.com/11-1-2009-11-14-2009
http://www.mytimesheet.com/period-beginning-11-1-2009
Run Code Online (Sandbox Code Playgroud)

这些似乎都没有削减它,但也许我只是过于批评.

friendly-url date-range

8
推荐指数
1
解决办法
1304
查看次数

如何在jsf中创建用户友好和seo友好的URL?

例如,我有类文章与方法getTitle ()getContent ().

我也有使用方法的ArticlesService getAllArticles ().如何创建具有有意义名称的链接列表(由...组成#{article.title})?喜欢:

http://mysiteaddress.com/article/first-article-title
http://mysiteaddress.com/article/how-to-make-links-in-jsf
Run Code Online (Sandbox Code Playgroud)

..或类似的东西.

我可以创建具有所有必要功能的链接<h:commandLink>,但我不知道如何为它制作好的'href':它总是有href'#'.

我可以创建很好的链接,<h:outputLink>但我不知道如何添加必要的功能.


在jsp中,我创建了自己的前端控制器,它从请求中解析了URL,然后执行重定向到对应的jsp-page.

如何在JSF中实现相同的功能?

jsf jsp friendly-url front-controller

8
推荐指数
2
解决办法
9149
查看次数

如何使用Backbone.js增强多语言网站导航?

我有一个多语言网站,显示几个(十几个)内容页面,有这样的漂亮网址:

example.com              <- home for default language (french)
example.com/biographie   <- page 1
example.com/en           <- home for english language
example.com/en/biography <- page 1 english translation
Run Code Online (Sandbox Code Playgroud)

我想将页面合并在一起并提供完整的ajax导航,就像Pitchfork一样.而最重要的是保留非JavaScript客户端(SEO,社交网络和其他)页面视图.

服务器提供完整的网页,然后当Backbone初始化时,它预取其他页面并将其注入DOM以加速导航.当我导航到另一个页面时,我使用Backbone内置历史记录API来记录历史记录中的新URL,并更改我的视图以显示所请求的页面.

var Navigator = Backbone.Router.extend({

  routes: {
    "*page":                "showPage",
  },

  showPage: function(page) {
    this.pages[page].show();
  }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是管理i18n(我的意思是翻译页面).如何设置我的路由器来处理语言?我该如何处理语言切换?

routes: {
  "*page":                "showPageFr",
  "en/*page":             "showPageEn",
},

showPageFr: function(page){
  showPage(page, 'fr');
},

showPageEn: function(page){
  showPage(page, 'en');
},

showPage: function(page, lang) {
  // How should I manage 'lang' parameter here ?
  this.pages[page].show();
}
Run Code Online (Sandbox Code Playgroud)

我看了i18n JS框架,但我认为我不需要它,因为我想翻译整个页面内容,而不是一些UI元素.所有翻译部分都在服务器端进行管理.

javascript seo friendly-url internationalization backbone.js

8
推荐指数
1
解决办法
4653
查看次数

谷歌看到了它不应该看到的东西.为什么?

出于一些神秘的原因,谷歌已将这两个地址编入索引,从而导致同一页面:

/something/some-text-1055.html

/index.php?pg=something&id=1055

(简短的通知 - 该网站自发布以来就有了友好的网址,我不知道谷歌如何找到"index.php?"网址 - 只有内容管理系统才有"不友好"的网址,这是受密码限制的)

我该怎么做才能解决这个问题?(我有大约1000页双重索引.)有人告诉我使用"disallow:index.php?" 在robots.txt文件中.对还是错?还有其他建议吗?

url seo friendly-url

7
推荐指数
2
解决办法
637
查看次数

禁用Web窗体项目中的自动友好URL

我在Visual Studio 2013中创建了一个C#Web表单项目.当我运行sample.aspx页面时,页面会自动使用/sample友好的URL路由.

我想手动处理路由,而不是让.NET自动完成.如何禁用友好的URL功能.我不希望它通过NuGet卸载,但只在代码中禁用.

c# asp.net friendly-url url-routing visual-studio-2013

7
推荐指数
1
解决办法
7020
查看次数