我使用了带有Rails应用程序的FriendlyId gem(版本4.0.8).我已经按照RailsCasts的教程进行操作,基于文档,我必须Model.find_each(&:save)在rails控制台上运行才能生成旧记录的slugs.但是,当我这样做时,我的所有旧记录的slug属性仍然没有,所以它并没有真正改变url的.
难道我做错了什么?这只发生在生产方式上.它在开发上运行良好.
更新:
我的模型看起来像这样:
class Member < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :gym
attr_accessible :category, :name, :description
validates :category, :name, :description, :presence => true
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
def self.search(search)
if search.present?
where("name LIKE ?", "%#{search}%")
else
find(:all)
end
end
def should_generate_new_friendly_id?
new_record?
end
end
Run Code Online (Sandbox Code Playgroud) 我决定使用GUID作为我的许多项目数据库表的主键.我认为这是一个很好的做法,特别是考虑到可扩展性,备份和恢复.问题是我不想使用常规GUID并搜索替代方法.我真的很想知道Pinterest我用什么作为主键.当您查看URL时,您会看到如下内容:
http://pinterest.com/pin/275001120966638272/
Run Code Online (Sandbox Code Playgroud)
我更喜欢数字表示,即使是存储为字符串.有没有办法实现这个目标?
此外,youtube还使用了一种不同的散列技术,我无法弄清楚:
http://www.youtube.com/watch?v=kOXFLI6fd5A
Run Code Online (Sandbox Code Playgroud)
这让我想起了缩短网址的方案.
我更喜欢最短的一个,但我知道它不能保证是唯一的.我首先考虑做这样的事情:
DateTime dt1970 = new DateTime(1970, 1, 1);
DateTime current = DateTime.Now;
TimeSpan span = current - dt1970;
Run Code Online (Sandbox Code Playgroud)
结果示例:
1350433430523.66
Run Code Online (Sandbox Code Playgroud)
打印自1970年以来的总毫秒数,但如果我每秒有数十万次写入会发生什么.
我主要更喜欢非BIGINT自动增量解决方案,因为使用第三方工具扩展数据库以及不太有问题的备份/恢复功能会减少很少的麻烦,因为我可以在服务器之间传输数据,如果我想要的话.
另一种复杂的方法是根据我的应用定制解决方案.在数据库中,主键还将包含用户名(唯一且用户无法更改),因此我可以将名称的数值与毫秒数组合,这将为我提供唯一的数字字符串.由于用户不以如此高的速率插入数据,因此数字ID保证是唯一的.我也可以删除最后5个数字并仍然获得一个唯一的ID,因为我假设用户不会以每秒超过1的速度插入数据,但我可能不会这样做(你怎么看?这个想法?)
所以我请求你的帮助.我的数据假设增长非常大,每年2TB,每秒有10万个新行.我希望URL看起来尽可能"友好",并且不想使用"常规"GUID.
我正在使用ASP.NET 4.5和MySQL开发我的应用程序
谢谢.
我想要所有的疑问
http://mysite.com/something/otherthing?foo=bar&x=y
Run Code Online (Sandbox Code Playgroud)
被重写为
http://mysite.com/something/otherthing.php?foo=bar&x=y
Run Code Online (Sandbox Code Playgroud)
换句话说,只需将.php扩展名设为可选的.
我认为用几个例子可以更好地解释我的问题......
获取http://myservice/myresource/?name=xxx&country=xxxx&_page=3&_page_len=10&_order=name asc
也就是说,一方面我有条件( name=xxx&country=xxxx ),另一方面我有影响查询的参数( _page=3&_page_len=10&_order=name asc )
现在,我想使用一些特殊的前缀(在这种情况下为“_”)来避免条件和参数之间的冲突(如果我的资源有“order”属性怎么办?)
有一些标准方法来处理这些情况吗?
--
我找到了这个例子(只是挑一个) http://www.peej.co.uk/articles/restful-delicious.html
获取http://del.icio.us/api/peej/bookmarks/?tag=mytag&dt=2009-05-30&start=1&end=2
但在这种情况下,条件字段已经定义(没有开始或结束属性)
我正在寻找一些通用的解决方案......
-- 编辑,一个更详细的例子来澄清
每一项都完全独立......假设我的资源是客户,并且(幸运的是)我的数据库中有数百万个客户。
所以网址可能是这样的
http://myservice/customers/?country=argentina,last_operation=2009-01-01..2010-01-01
它应该给我所有去年购买过任何东西的阿根廷客户
现在,我想使用此服务来构建浏览页面,或者使用 ajax 填充组合,因此想法是添加一些元数据来控制我应该获取哪些信息
要构建浏览页面,我会添加
http://...,_page=1,_page_len=10,_order=状态,名称
并使用 ajax 填充自动建议组合
http://...,_page=1,_page_len=100,_order=状态,名称,名称=what_ever_type_the_user *
用与用户输入的内容相匹配的前 100 个客户来填充组合...
我的问题是是否有某种标准(书面或非书面)方式以restfull url 方式编码此类内容......
我想创建一个类似类型的url,就像创建问题时堆栈溢出一样.
例:
使用jQuery(插件?)非ajax-get-post-using-jquery-plugin的非ajax GET/POST
我特别感兴趣的是最后一部分,我粗略地说了一遍.如何通过分隔符实现将页面标题添加到URL的影响?
这种技术叫做什么?
我正在创建一个视频网站.我希望我的直接网址看起来像example.com/watch/this-is-a-slug-1,其中1是视频ID.我不希望这个小块很重要.example.com/watch/this-is-another-slug-1应指向同一页面.在SO上,/ questions/id是url中唯一重要的部分.我怎样才能做到这一点?
到目前为止我已经这样做了:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?load=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
然后在我的索引页面(在根目录中)我正在使用PHP来确定要加载的页面:
// Swap to variables
$load = $_GET['load'];
// Home page
if (!$load || $load == "") { include('home.php'); exit(); }
// Dashboard
if ($load == "dashboard") { include('dashboard.php'); exit(); }
// About
if ($load == "about") { include('about.php'); exit(); }
// Username
$data_array = array(':username' => $load);
$select_account = $connect->prepare("SELECT * FROM `users` WHERE `username` = :username");
$select_account-> execute($data_array);
$account_amount = $select_account->rowCount();
if ($account_amount > 0) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个rails应用程序,需要检查输入的网站是否生成了搜索引擎友好的URL.我想到的解决方案是使用nokogiri解析网站的HTML并查看链接标记以查找URL和看看它们是否对搜索引擎友好.是否还有其他方法可以做到这一点?任何帮助都会非常棒.
我成功使用ASP.NET友好URL,但我需要忽略特定Foo.aspx页面的路由(因为此页面需要POST数据,并且一旦重新路由POST数据就不再可用了Page_Load()!).
看起来使用ASP.NET友好URL会丢弃任何忽略路由的尝试.一旦使用ASP.NET友好URL路由,即使用于忽略路由的MSDN示例也不起作用:
routes.Ignore("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
Run Code Online (Sandbox Code Playgroud)
而忽略Foo.aspx代码的路径应该是这样的,不是吗?
routes.Ignore("{*fooaspx}", new { fooaspx = @"(.*/)?foo.aspx(/.*)?" });
Run Code Online (Sandbox Code Playgroud)
该Global.asax代码如下所示:
public static void RegisterRoutes(RouteCollection routes) {
// This doesn't work whether I put this code before or after ASP.NET Friendly URLs code.
routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
routes.Canonicalize().Lowercase();
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
void Application_Start(object sender, EventArgs e) {
RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)
在ASP.NET Friendly URL codeplex网站上已经提出了这个问题,但没有得到答案.
谢谢你的帮助:)
我知道如何进行URL的重写,例如:
www.example.com/index.php?id=1&cat=3to www.example.com/1/3/(或者其他).我知道.
我不知道的是如何在所有页面中更改我的整个链接以链接到漂亮的URL.我所有网站的链接都是旧时尚(<a href="index.php?id=1&cat=2">),还有很多.
如果用户点击index.php?id = 1,我问是否有人有想法或知道如何自动重定向到那个漂亮的URL.(如果你在网址中更改标题,几乎就像这个网站Stackoverflow).
所以我的预算是......
使用.htaccess读取index.php?id = 1&cat = 2来重写索引/ 1/3本身再次解释(奇怪)
一个php文件,用于重定向htaccess重写为原始的...
结论:<a href="index.php?id=1&.....">自动更改为index/1/2
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
##################################
# This turns index.php?id=1&cat=2 into index/1/2 and then back 'transparent' into index.php?id=1&cat=2 if you have old fashioned
# links in your site and don't want to change them :)
# Avoid mod_rewrite infinite loops
# This is critical if you want to use this code
RewriteCond %{ENV:REDIRECT_STATUS} …Run Code Online (Sandbox Code Playgroud) friendly-url ×10
asp.net ×3
mod-rewrite ×3
php ×3
url ×3
django ×1
friendly-id ×1
guid ×1
nokogiri ×1
pagination ×1
python ×1
rest ×1
rewrite ×1
routes ×1
routing ×1
ruby ×1
seo ×1
slug ×1