我正在开发一个django项目,并希望在url的末尾包含一个slug,就像在stackoverflow.com上所做的那样:http://example.com/object/1/my-slug-generated-from-我的标题
对象ID将用于查找项目,而不是slug - 而且,就像stackoverflow.com一样,当获取链接时(仅显示它),slug根本不重要.
问题:动态生成slug是否存在下行(或上行),而不是将其保存为实际的数据库字段?
例如(不是真正的代码):
class Widget(models.Model):
title = models.CharField()
def _slug(self):
return slugify(self.title)
slug = property(_slug)
Run Code Online (Sandbox Code Playgroud)
而不是使用类似AutoSlugField的东西(例如)?
由于我的计划是让它与标题匹配,我不知道在数据库中是否有重复字段是否有意义.
谢谢!
有些网站,比如SO,允许在网址中出现"虚假"的漏洞.在我的网站上实现URL slugs之前,我有一个'最佳实践'的问题......
给定一个结构example.com/123/article-slug-here/,如果我的网站通过查询ID允许虚假slu - -
我是不是该 ...
-要么-
example.com/123/this-article-s-u-x不存在?我正在使用CakePHP 1.3.我有一个产品型号.对等的数据库表有id和slug领域.
如果我有一个产品,是id:37和slug:My-Product-Title我想要的网址为产品是:
产品/ 37 /我 - 产品名称
而不是标准:
产品/视图/ 37
我创建了一个如下所示的路线:
Router::connect(
'/products/:id/:slug',
array('controller' => 'products', 'action' => 'view'),
array('pass' => array('id'), 'id' => '[0-9]+')
);
Run Code Online (Sandbox Code Playgroud)
现在我可以去http://server/products/37/My-Product-Title,它带我到正确的地方.
但是如何获得反向路由以自动构建正确的URL $HtmlHelper->link?
我用的时候:
echo $html->link(
'Product 37',
array('controller'=>'products', 'action' => 'view', 37)
);
Run Code Online (Sandbox Code Playgroud)
它仍然输出标准products/view/37网址.
好的,我想说我有一个URL
example.com/hello/world/20111020(带或不带斜杠).我想做的是从域example.com中删除网址.然后打破hello world 20111020成阵列.但我的另一个问题是.有时URL没有/ hello/world/20111020或者只是/ hello /所以我需要先确定example.com之后是否有任何内容,如果没有,那么什么都不做,因为显然没有什么可以使用的.但是,如果每个/我都需要将它按顺序添加到此数组中.所以我可以使用数组[0]并知道它是你好的.
几天前我尝试了一些东西,但遇到了拖尾斜线的问题,它一直打破了剧本,我遗憾地放弃了这个想法.今天我正在寻找新的想法.
我正在使用的rails 3.0.x项目使用一个gem,其中包含heroku部署所不需要的大量测试数据.我想将它排除在heroku slug之外,因为它会向slug添加几十个meg(并且已经将我们超过100mb大小限制几次,因为其他原因我们的slug很大.)
我尝试使用.slugignore机制这样做,但我找不到一种方法让它排除宝石中的文件而不是应用程序中的文件.这是在Bamboo堆栈上运行的rails 3.0.x应用程序,但如果在这些版本中有解决方法/过程,我会升级到rails 3.1和/或雪松堆栈.
关于解决这个问题的其他建议并非"让巨大的宝石更小"也非常受欢迎.
我看到一个Wordpress插件,从文章URL Slug中删除某些单词.
所以举个例子,没有插件,如果我创建一篇标题为...的文章
然后Wordpress会自动创建这个URL Slug ...
现在,如果我使用删除"停止"单词的插件,它将改为创建此URL slug ...
现在我的问题,插件的描述说它对SEO更好,我很好奇,如果其他人觉得这样更好地删除这样的话或更好的有更长的版本?
在尝试了解如何创建更好的URL以方便用户而不牺牲SEO时,我正在研究不同网站的结构.我有一些与以下相关的问题:
亚马逊 - >/typical-product-slug/dp/{id}
stackoverflow - >/questions/{id}/question-slug
yardsellr - > for_sale#!/ product-slug - {id}
[1]为什么亚马逊将域名放在域名后面就像stackoverflow那样使它更容易理解并提供目录结构?此外,将{id}保持在最后会使其更容易出现剪切错误.
[2]亚马逊和stackoverflow对{id}的定位是否与亚马逊的{id}是字母数字和stackoverflow的数字有关?也许字母数字对于用户来说更加神秘,因此亚马逊将其置于最正确的位置,从SEO的角度来看?
[3]对于亚马逊来说,没有使用关键词'产品',甚至像'书籍'或'音乐'这样的高级别类别代替'dp'会使SEO更有效?
[4] yardsellr for it的尾随{id}不使用'/'而是' - '作为标记.Google表示URL dir结构的深度并不重要.什么是受益于这种结构的码头,它只是因为slu and和id既独特又相同?这与深度有关吗?如果他们已将id放在slug之前,这是否会影响SEO?
我知道大多数这些都没有直接的答案.寻找你的经验和想法,以便我可以学习.
谢谢.
基本上我有一个名为"Parts"的自定义帖子类型设置,目前有超过5,000个帖子.每个部件都有许多自定义字段,包括"部件号".目前,每个部分的URL是:
http://site.com/parts/name-of-part/
我宁愿拥有的是:
http://site.com/parts/XXXX-608-AB/(这是一个部件号,存储为自定义字段"partno".)
我相信我需要做两件事:
1)根据自定义字段"partno"制作一个脚本,以批量编辑每个现有部件的所有slug.
2)连接到Wordpress函数以触发它始终根据自定义字段"partno"为新零件创建slug.
有没有人知道如何完成这些方面中的一个或两个?
更新:以下是我最终用于更改现有帖子的代码
// Set max posts per query
$max = 500;
$total = 5000;
for($i=0;$i<=$total;$i+=$max) {
$parts = get_posts(array('post_type' => 'parts', 'numberposts' => $max, 'offset' => $i));
// loop through every part
foreach ( $parts as $part ) {
// get part number
$partno = get_post_meta( $part->ID, 'partno', true );
$updated_post = array();
$updated_post['ID'] = $part->ID;
$updated_post['post_name'] = $partno;
wp_update_post( $updated_post ); // update existing posts
echo $part->ID;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:以下是我在functions.php中用来更改正在发布的帖子的代码 (部分归功于 …
我想在codeigniter框架中开发一个网站,我可以通过slug访问任何网页.
例如,就像WordPress和Magento一样,我们可以通过www.sitename.com/category_type/category_detailpage访问类别页面,
我们也可以通过在主URI www.sitename.com/category_detailpage之后添加slug来直接访问Category_detail.
所以我的问题是,如果你在Codeigniter中有这个Slug目录的任何案例研究项目代码,我如何设计数据库中的slug表模式,请尽快告诉我.
提前致谢!
我想要一个这样的网址:
www.mysite.com/my-super-blog-post
Run Code Online (Sandbox Code Playgroud)
代替这个:
www.mysite.com/7
Run Code Online (Sandbox Code Playgroud)
其中“ 7”是我的News对象的id属性。
当我在Symfony文档中看到时,我认为我需要使用以下代码行:
$this->generateUrl('blog_show', array('slug' => 'my-blog-post'), UrlGeneratorInterface::ABSOLUTE_URL);
Run Code Online (Sandbox Code Playgroud)
这样对吗 ?我不明白的是,我需要在哪里使用那行代码?在我的NewsController.php文件中?
或者,也许您可以给我一个链接以了解解决方案。
slug ×10
php ×3
url ×3
seo ×2
wordpress ×2
assets ×1
cakephp ×1
codeigniter ×1
django ×1
doctrine ×1
friendly-url ×1
heroku ×1
javascript ×1
jquery ×1
magento ×1
parsing ×1
routing ×1
symfony ×1
url-routing ×1