来自维基百科:
甲蛞蝓是识别使用人类可读关键字的页面的URL的一部分.
为了使用户更容易键入URL,通常也会删除或替换特殊字符.例如,重音字符通常被英文字母中的字母取代; 标点符号通常被删除; 和空格(必须编码为%20或+)由短划线( - )或下划线(_)代替,这些更美观.
我开发了一个照片共享网站,用户可以在其上传,分享和查看照片.
所有页面都是自动生成的,没有我对标题的控制.因为照片的标题或用户的名称可能包含重音字符或空格,我需要一个功能来自动创建slugs并保持可读的URL.
我创建了以下函数来替换重音字符(èçëçî),删除标点符号和错误字符(#@&〜^!)并以破折号转换空格.
php:
function sluggable($str) {
$before = array(
'àáâãäåòóôõöøèéêëðçìíîïùúûüñšž',
'/[^a-z0-9\s]/',
array('/\s/', '/--+/', '/---+/')
);
$after = array(
'aaaaaaooooooeeeeeciiiiuuuunsz',
'',
'-'
);
$str = strtolower($str);
$str = strtr($str, $before[0], $after[0]);
$str = preg_replace($before[1], $after[1], $str);
$str = trim($str);
$str = preg_replace($before[2], $after[2], $str);
return $str;
}
Run Code Online (Sandbox Code Playgroud) 疯狂的克里斯滕森得到一个到00amyWGct0y_ze4lIsj2Mw
它可以小于那个吗?
我想将参数'A1B2C3'传递给基于Google App Engine的GWT应用程序.我这样做就像www.example.com/index.html?key=A1B2C3.虽然它有效,但我想使用漂亮的URL.是否可以在Google App Engine上进行URL重写?我怎么也找不到.
www.example.com/A1B2C3
Run Code Online (Sandbox Code Playgroud)
代替
www.example.com/index.html?key=A1B2C3
Run Code Online (Sandbox Code Playgroud)
我正在使用Google App Engine和GWT.全部是Java.
URL重写如何影响$_GETPHP 的参数?
假设我有一个类似的URL http://example.com/index.php?p=contact,我用它$_GET['p']来告诉index.php联系页面.如果我使用的URL转换为重写规则http://example.com/contact,将$_GET['p']仍然按预期工作?
如果确实如此,你能详细说明它的工作原理吗?如果没有,可以使用什么策略来解决问题,以便页面在重写和不重写时都能正常工作?
据我所知,我不应该使用ÅÄÖ(就像他们在ASCII中没有视觉表现一样).
那么什么被认为更加SEO友好?用"a"或"ae"代替所有"ä"?(CMS Umbraco取代了ae,我倾向于此).
编辑:一些瑞典网站如何做到的摘要:
aftonbladet.se/ä=> a(http://www.aftonbladet.se/kropphalsa/)
uppsatser.se/ A = A>(http://www.uppsatser.se/om/v%C3%A5rd+av/)
lindqvist.com/ä=> a(http://www.lindqvist.com/b/google-maps-placering-ar-gratis)
umbraco CMS网站(如vaxab.se)ä=> ae(http://vaxab.se/tjaenster.aspx)
dn.se/ä=> a(http://www.dn.se/sthlm/brak-utanfor-aspuddsbadet-1.1008899)
我有Login.xhtml和Home.xhtml.我web.xml按如下方式配置了url模式
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>Login.xhtml</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
当我运行整个项目时,登录页面URL就像这样http://localhost:8080/fran/Login.xhtml,这fran是我的项目名称..
但是,我希望它http://localhost:8080/fran/Login/代替http://localhost:8080/fran/Login.xhtml.
我怎样才能做到这一点?是否可以<url-pattern>为每个页面自定义以摆脱.xhtml扩展?
使用数据库主键作为URL标识符有哪些优缺点?例如,http:// localhost/post/view/13 - 13是我的帖子表的主键.
像reddit这样的网站使用的是我认为的唯一ID,它不是主键,但仍然有助于识别链接:
http://www.reddit.com/r/funny/comments/7ynin/the_mystery_of_irelands_worst_driver/
只要/ 7ynin /是相同的,您就可以将URL的最后部分更改为您想要的任何内容.
Digg似乎使用了一个链接标题的标题来标识一个链接:
http://digg.com/space/Liquid_Water_Recently_Seen_on_Mars
如果我没记错的话,默认的WordPress安装使用index.php?p =#作为他们的ID,直到启用了花哨的网址.
我可以看到为什么SEO的缘故,你想要有最多信息的网址,但我只是想看看使用主键是安全风险还是只是坏形式.
在仔细研究了人们对游戏标题的不同方式后,我注意到它经常忽略了如何处理非英语游戏.
url编码非常严格.请参阅http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
所以,例如,人们如何处理标题slu for等问题
"Unalágrimacayóenla arena"
人们可以为印欧语言提出合理的表格,即.可以通过ISO-8859-1编码的东西.例如,转换表将转换'á'=>'a',因此slug将是
"UNA-Lágrima酒店-岛-ZH-LA-舞台"
但是,我正在使用unicode(特别是使用UTF-8编码),所以不保证我会得到什么类型的代码点(我必须为不能进行ISO-8859-1编码的事情做准备.
我是个骗子.怎么处理这个?我是否应该为ISO_8859-1范围内的字符(<255)提供转换表并放弃其他所有内容?
编辑:为了给出更多的背景,先验,我真的不希望用非印欧语言来贬低数据,但是如果我遇到这样的数据,我想有一个计划.扩展ASCII的转换表会很好.有什么指针吗?
此外,由于人们在问,我正在使用python,在Google App Engine上运行
PHP正则表达式脚本删除任何不是字母或数字0到9的内容,并将空格替换为连字符 - 更改为小写,确保只有一个连字符 - 单词之间没有 - 或---等.
例如:
例子:快速的棕色狐狸跳跃结果:快速的棕色狐狸跳跃
示例:快速的棕色狐狸跳了!结果:快速的棕色狐狸跳了起来
示例:快速的棕色狐狸 - 跳了!结果:快速的棕色狐狸跳了起来
示例:快〜!@ @ $%^&*()_ + = -------棕色{} |] [:"'; <>?.,/ fox - 跳跃!结果: - 快速棕色狐狸跃升
示例:快速1234567890~`!@#$%^&*()_ + = -------棕色{} |] [:"'; <>?.,/ fox - 跳!结果: - 快速-1234567890棕狐狸跃升
任何人都有正则表达的想法?
谢谢!
为用户提供网站内容的友好网址当然很好.但是如何最好地做到这一点?像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命名空间.
friendly-url ×10
php ×3
seo ×2
url ×2
compression ×1
guid ×1
gwt ×1
java ×1
jsf ×1
jsf-2 ×1
mod-rewrite ×1
namespaces ×1
python ×1
regex ×1
security ×1
slug ×1
string ×1
unicode ×1
url-routing ×1