使用 PHP 进行 SEO 的蛞蝓 - 将名称附加到 URL 的末尾
Posted
技术标签:
【中文标题】使用 PHP 进行 SEO 的蛞蝓 - 将名称附加到 URL 的末尾【英文标题】:Slugs for SEO using PHP - Appending name to end of URL 【发布时间】:2013-11-10 07:27:35 【问题描述】:我在 *** 网站上注意到的一点:
如果您访问 ***.com 上问题的 URL:
"https://***.com/questions/10721603"
网站将问题的名称添加到URL的末尾,因此变成:
"https://***.com/questions/10721603/grid-background-image-using-imagebrush"
这很好,我知道这会使 URL 更有意义,并且可能是一种很好的 SEO 技术。
在 *** 上看到这个实现后我想要实现的目标
我希望在我的网站上实现相同的功能。我很高兴使用header()
301 重定向来实现这一点,但我正在尝试提出一个紧凑的脚本来解决这个问题。
到目前为止我的代码
Please see it working by clicking here
// Set the title of the page article (This could be from the database). Trimming any spaces either side
$original_name = trim(' How to get file creation & modification date/times in Python with-dash?');
// Replace any characters that are not A-Za-z0-9 or a dash with a space
$replace_strange_characters = preg_replace('/[^\da-z-]/i', " ", $original_name);
// Replace any spaces (or multiple spaces) with a single dash to make it URL friendly
$replace_spaces = preg_replace("/([ ]1,)/", "-", $replace_strange_characters);
// Remove any trailing slashes
$removed_dashes = preg_replace("/^([\-]0,)|([\-]2,)|([\-]0,)$/", "", $replace_spaces);
// Show the finished name on the screen
print_r($removed_dashes);
问题
我创建了这段代码,从外观上看它运行良好,它使字符串 URL 对人眼友好且可读。但是,我想看看是否可以简化或“收紧”一点......因为我觉得我的代码可能过于复杂。
我并不想把它放在一行上,因为我可以通过将函数相互嵌套来做到这一点,但我觉得可能有一种整体上更简单的方法来实现它——我正在寻找想法.
综上,代码实现如下:
删除所有“奇怪”字符并用空格替换它们 用破折号替换任何空格以使其对 URL 友好 返回一个不带任何空格的字符串,单词用破折号分隔,并且没有尾随空格或破折号 字符串可读(不包含百分号和 + 符号,就像简单地使用urlencode()
感谢您的帮助!
可能的解决方案
我在写这篇文章时发现,我正在寻找所谓的 URL 'slug',它们确实对 SEO 有用。
I found this library on Google code 其中appears to work well in the first instance。
SO which can be found here 上还有一个值得注意的问题,还有其他例子。
【问题讨论】:
刚发现他们叫“蛞蝓”。 【参考方案1】:我试着和你一样玩 preg。但是,当您开始研究外语时,它会变得越来越复杂。 我最终做的只是修剪标题,并使用 urlencode
$url_slug = urlencode($title);
我还必须添加这些:
$title = str_replace('/','',$title); //Apache doesn't like this character even encoded
$title = str_replace('\\','',$title); //Apache doesn't like this character even encoded
还有 3rd 方库,例如:http://cubiq.org/the-perfect-php-clean-url-generator
【讨论】:
Doesn't return a string that is readable - 请阅读问题? 喜欢第 3 方库的外观。你以前用过吗,有没有和你说的一样的问题? 我没有使用第三者,因为外语对我来说是一个非常重要的部分。我选择坚持使用 URLEncode,尽管它看起来并不总是那么漂亮,但它工作正常。【参考方案2】:确实,您可以这样做:
$original_name = ' How to get file creation & modification date/times in Python with-dash?';
$result = preg_replace('~[^a-z0-9]++~i', '-', $original_name);
$result = trim($result, '-');
要处理其他字母,您可以改用此模式:
~\PXan++~u
或
~[^\pL\pN]++~u
【讨论】:
以上是关于使用 PHP 进行 SEO 的蛞蝓 - 将名称附加到 URL 的末尾的主要内容,如果未能解决你的问题,请参考以下文章