标签: slug

存储唯一URL Slug的最佳方法是什么?

我正试图为我的网站生成一些网址'slug'.它基于单个用户生成的文本.

现在,我已经制作了自己的slug方法,所以我不会为此做一些代码.

我想知道的是哪里是最好的地方来确定这个slug是否是唯一的然后插入它因为slug字段是一个唯一的密钥索引.

最初,我在任何插入(对表)上都有一个触发器,所以当输入数据时,然后确定slug.我有一个函数检查包含用户文本(而不是slug)的记录数,然后生成slug并将记录计数+ 1添加到新slug的末尾.

例如.

在表中找到5条记录,其中包含相同的用户生成内容.现在这个slug文本中有一个6加到了最后.

缺陷:如果用户更改其文本,则slug不会更改.

无论如何,我想知道其他人是否已经解决过这个问题,并找到了解决问题的方法?

database url slug

6
推荐指数
1
解决办法
6132
查看次数

如何在Django中创建unique_for_field slug?

Django有一个unique_for_date属性,您可以在向模型添加SlugField时设置该属性.这会导致slug仅对您指定的字段的Date具有唯一性:

class Example(models.Model):
    title = models.CharField()
    slug = models.SlugField(unique_for_date='publish')
    publish = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

对于像ForeignKey这样的非DateTime字段,实现相同功能的最佳方法是什么?理想情况下,我想做这样的事情:

class Example(models.Model):
    title = models.CharField()
    slug = models.SlugField(unique_for='category')
    category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)

这样我就可以创建以下网址:

/example/category-one/slug
/example/category-two/slug
/example/category-two/slug <--Rejected as duplicate
Run Code Online (Sandbox Code Playgroud)

我的想法到目前为止:

  • 将slug和categoryid的唯一索引添加到表中.这需要Django之外的代码.当插入/更新失败时,内置管理员会正确处理吗?

  • 覆盖模型的保存并添加我自己的验证,如果存在重复则抛出错误.我知道这会起作用,但看起来不是很干.

  • 创建一个继承自base的新slug字段,并在那里添加unique_for功能.这似乎是最好的方法,但我查看了核心的unique_for_date代码,并且扩展它似乎不太直观.

有关最佳方法的任何想法,建议或意见?

django django-models slug

6
推荐指数
1
解决办法
2531
查看次数

Rails中的漂亮(过时)RESTful URL

我希望我的网站网址看起来像这样:

example.com/2010/02/my-first-post
Run Code Online (Sandbox Code Playgroud)

我的Post模型有slug字段('my-first-post')和published_on字段(我们将从中扣除网址中的年份和月份).

我希望我的Post模型是RESTful,所以url_for(@post)像他们应该的工作,即:它应该生成上述url.

有没有办法做到这一点?我知道你需要覆盖to_parammap.resources :posts使用:requirements选项集,但我无法全部工作.


我几乎完成了,我90%在那里.使用resource_hacks插件我可以实现这个目的:

map.resources :posts, :member_path => '/:year/:month/:slug',
  :member_path_requirements => {:year => /[\d]{4}/, :month => /[\d]{2}/, :slug => /[a-z0-9\-]+/}

rake routes
(...)
post GET    /:year/:month/:slug(.:format)      {:controller=>"posts", :action=>"show"}
Run Code Online (Sandbox Code Playgroud)

并在视图中:

<%= link_to 'post', post_path(:slug => @post.slug, :year => '2010', :month => '02') %>
Run Code Online (Sandbox Code Playgroud)

生成适当的example.com/2010/02/my-first-post链接.

我也想这样做:

<%= link_to 'post', post_path(@post) %>
Run Code Online (Sandbox Code Playgroud)

但它需要覆盖to_param模型中的方法.应该相当容易,除了事实,to_param必须返回String,而不是Hash …

rest url ruby-on-rails slug

6
推荐指数
2
解决办法
2037
查看次数

如何在Django中创建类似于stackoverflow的URL?

我正在创建一个视频网站.我希望我的直接网址看起来像example.com/watch/this-is-a-slug-1,其中1是视频ID.我不希望这个小块很重要.example.com/watch/this-is-another-slug-1应指向同一页面.在SO上,/ questions/id是url中唯一重要的部分.我怎样才能做到这一点?

python django url friendly-url slug

6
推荐指数
1
解决办法
807
查看次数

MongoDB评论系统Slug,它的用途是什么?

我正在阅读关于如何在这里建立数据库评论系统的MongoDB教程.一条评论文件包含以下信息:

{
    _id: ObjectId(...),
    discussion_id: ObjectId(...),
    parent_id: ObjectId(...),
    slug: '34db/8bda'
    full_slug: '2012.02.08.12.21.08:34db/2012.02.09.22.19.16:8bda',
    posted: ISODateTime(...),
    author: {
              id: ObjectId(...),
              name: 'Rick'
             },
    text: 'This is so bogus ... '
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法理解的是什么,slug并且full_slug是,不能从文档的理解.

slug mongodb

6
推荐指数
2
解决办法
4098
查看次数

MVC 4创建slug类型url

我正在尝试创建像url一样的stackoverflow.

我以下示例工作正常.但是,如果我删除控制器,那么它会出错.

http://localhost:12719/Thread/Thread/500/slug-url-text
Run Code Online (Sandbox Code Playgroud)

注意第一个Thread是控制器,第二个是动作.

如何使上面的URL看起来如下,从网址中排除控制器名称?

 http://localhost:12719/Thread/500/slug-url-text
Run Code Online (Sandbox Code Playgroud)

我的路线

   public class RouteConfig
   {
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute("Default", // Route name
             "{controller}/{action}/{id}/{ignoreThisBit}",
             new
             {
                 controller = "Home",
                 action = "Index",
                 id = "",
                 ignoreThisBit = ""
             });  // Parameter defaults )


    }
 }
Run Code Online (Sandbox Code Playgroud)

线程控制器

 public class ThreadController : Controller
 {
    //
    // GET: /Thread/

    public ActionResult Index()
    {

        string s = URLFriendly("slug-url-text");
        string url = "Thread/" + 500 + "/" + s;
        return RedirectPermanent(url);

    }

    public ActionResult Thread(int id, …
Run Code Online (Sandbox Code Playgroud)

url-rewriting slug asp.net-mvc-4

6
推荐指数
1
解决办法
5697
查看次数

制作一个独特的帖子

我在放置的功能很少,但是没有按照我想要的方式工作.

根据帖子标题,即时自动创建slug.

示例:如果帖子标题是"测试",那么slug将是"test"

我的问题是,如果他们重复输入帖子标题"测试",这意味着slug也会被复制.出于这个原因,我已经创建了2个函数来为我处理这个问题.

此函数检查数据库中是否存在slug

function slug_exist($x){
    global $db;
        $sql = "SELECT post_name FROM posts WHERE post_name=\"$x\"";
        $query = $db->select($sql);
            if($db->num_rows() > 0){
                return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果slug确实存在于数据库中,那么我使用这个函数给slug一个唯一的名字

    if(slug_exist($slug)){
        $rand = rand(10,50);
        $slug = $slug."-".$rand;
            return $slug;
    }
Run Code Online (Sandbox Code Playgroud)

那么当slug将获得独特的slug名称时,它就像 Example: test-244

我希望slug是按数字顺序而不是随机顺序.

**Example:**

Post Title is "Test"
Slug is "test-1"

Post Title is "Test"
Slug is "test-2"

Post Title is "Test"
Slug is "test-3"
Run Code Online (Sandbox Code Playgroud)

这是我知道如何详细解释的唯一方式,如果您不确定要采取什么,请告诉我.谢谢!

php slug

6
推荐指数
1
解决办法
4871
查看次数

如何将slug添加到asp.net核心网站中的所有Link生成?

我需要能够控制我的Url.Content("~")调用生成的链接,以便能够在链接的开头接受Slug.基本上托管URL将位于负载均衡器后面,可能位于根级别或更友好的URL后面...

例如:该站点配置为在http:// localhost:5001下运行,因此Url.Content("~/scripts/site.js")将生成"/scripts/site.js"

如果浏览器直接访问该URL或甚至是别名(如www.mysite.com),这都没问题.

但我希望o能够灵活地在www.mysite.com/Slug下托管该网站(想想证书等)......

现在我生成的链接转到www.mysite.com/scripts.site.js,它解析为404.

理想情况下,slug可以配置为自定义IUrlHelper,甚至是自定义LinkGenerator,但我似乎无法注入那些并覆盖当前的.

我试过了:

services.AddScoped<IUrlHelper>(x =>
            {
                var actionContext = x.GetService<IActionContextAccessor>().ActionContext;
                return new MyCustomUrlHelper(actionContext);
            });
Run Code Online (Sandbox Code Playgroud)

但无法注入.当我尝试调试时,我注意到如果你在控制器中调用相同的命令,你会得到一个实例Microsoft.AspNetCore.Mvc.Routing.EndpointRoutingUrlHelper.

有没有办法在不创建自定义帮助程序的情况下更改它(因为在某些区域会丢失并且几乎不可能找到被滥用的帮助程序)

c# slug urlhelper asp.net-core-mvc

6
推荐指数
1
解决办法
920
查看次数

DDD:在哪里生成实体的 url slug?

你如何处理 DDD 中的 url slug 生成?

内部构造函数?但是依赖其他服务的实体并不好。

Pass as constructor argument? I think slugs shouldnt be there because they are not business requirements. are they?

or just having a setter?

entity domain-driven-design slug

5
推荐指数
1
解决办法
681
查看次数

TYPO3 9.5.x URL Segment (slug) 忽略页面

过去,我们通过将页面放入“元”或“子菜单”之类的页面来组织页面树中的页面。这些页面具有“从说 url 中排除”选项,因此它们的名称不会呈现到 url。

在 TYPO3 9.5 中是否有任何选项可以忽略生成“slug”的页面?

例如:

错误:https://www.somedomain.tld/metamenu/terms-and-conditions/

右图:https://www.somedomain。顶级域名/条款和条件/

如何“忽略”页面“元菜单”以自动生成slug?

最好的问候约翰内斯

typo3 slug typo3-9.x

5
推荐指数
1
解决办法
2304
查看次数