为用户提供网站内容的友好网址当然很好.但是如何最好地做到这一点?像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命名空间.
我正在开发我的第一个体面的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)
显然,这是所有未经测试的"航空代码",但你明白了.
我基本上尝试过下面的mode_rewrite规则.它最后使用斜杠,但是我想让它工作,无论它是否有一个尾部斜杠.基本上我希望它像这样,因为有些人认为它是正常的,最后有一个斜线而其他人不这样做,因此我希望它能够工作,无论它是否存在.
RewriteRule ^signup/register(.[^/]*) /signup/register.php [NC]
Run Code Online (Sandbox Code Playgroud)
基本上它会工作,http://localhost/signup/register/但如果我从最后删除/它会给出404错误.
看看我的前端URL生成的Str :: slug,但只是想知道你们如何用路由等来实现它,例如,你们如何将http://www.example.com/courses/1更改为http ://www.example.com/courses/this-course
好吧,让我们说我正在编写一个论坛应用程序,我想要漂亮的URL.但是,我的所有表都使用数字ID,因此我不确定格式化这些资源的URL的最佳方法.让我假装我正在尝试获取ID为123456的主题和标题这是一个论坛帖子.我已经看过它做了几个方面:
你会说哪一个,考虑所有的因素(包括搜索引擎优化),最佳的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)
这些似乎都没有削减它,但也许我只是过于批评.
例如,我有类文章与方法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中实现相同的功能?
我有一个多语言网站,显示几个(十几个)内容页面,有这样的漂亮网址:
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
出于一些神秘的原因,谷歌已将这两个地址编入索引,从而导致同一页面:
/something/some-text-1055.html
和
/index.php?pg=something&id=1055
(简短的通知 - 该网站自发布以来就有了友好的网址,我不知道谷歌如何找到"index.php?"网址 - 只有内容管理系统才有"不友好"的网址,这是受密码限制的)
我该怎么做才能解决这个问题?(我有大约1000页双重索引.)有人告诉我使用"disallow:index.php?" 在robots.txt文件中.对还是错?还有其他建议吗?
我在Visual Studio 2013中创建了一个C#Web表单项目.当我运行sample.aspx页面时,页面会自动使用/sample友好的URL路由.
我想手动处理路由,而不是让.NET自动完成.如何禁用友好的URL功能.我不希望它通过NuGet卸载,但只在代码中禁用.
friendly-url ×10
url ×4
mod-rewrite ×3
seo ×3
.htaccess ×1
apache ×1
asp.net ×1
backbone.js ×1
c# ×1
date-range ×1
javascript ×1
jsf ×1
jsp ×1
laravel-4 ×1
namespaces ×1
php ×1
slug ×1
string ×1
url-routing ×1