文件/路径不带斜杠的规范 URL
Posted
技术标签:
【中文标题】文件/路径不带斜杠的规范 URL【英文标题】:Canonical URL without trailing slash for file/path 【发布时间】:2022-01-22 08:06:38 【问题描述】:我有一个基于 Codeignitor (theinnovativepackaging.com) 的网站。从 SEO 的角度来看,我已经读到根 URL 中的尾随斜杠并不重要,但它对文件/路径很重要,例如 /about-us 和 /about-us/ 就我所研究的而言。我的问题是我的网站页面在 URL 中有斜杠,但是当您查看页面源并检查规范 URL 是否匹配时,我没有看到任何斜杠。 如果我有这样的 URL 结构,这有关系吗 地址栏中的 URL:example.com/product-name/ 规范 URL:example.com/product-name。 据我研究,它不是 SEO 的好习惯。如果可以,请告诉我,或者如果它不友好地指导我如何在产品页面中添加斜杠。我正在附加我的网站 .htaccess
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
RewriteEngine On
RewriteCond %SERVER_PORT 80
RewriteRule ^ https://example.com%REQUEST_URI [R=301,NE,L]
RewriteCond %THE_REQUEST ^GET.*index\.php [NC]
RewriteCond %THE_REQUEST !/system/.*
RewriteRule (.*?)index\.php/*(.*) /$1/$2 [R=301,L]
# Standard ExpressionEngine Rewrite
# ------------------------------
RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
我的主要目标是在地址栏中保持规范标签和 URL 相同,如果它确实影响 SEO
【问题讨论】:
你读过seo - Does it make a difference if your URL path ends in a trailing slash or not? - Webmasters Stack Exchange吗? SEO是否有斜线并不重要,但您需要保持一致。为简单起见,大多数答案建议删除尾部斜杠。 @StephenOstermiller 我的意思是说,地址栏中的 URL 和规范 URL 的不同之处在于产品页面末尾是否存在斜杠。我的基本问题是,根据 SEO 的观点,地址栏中的规范 URL 和 URL 不应该相同。如果是,比如何? @StephenOstermiller 我已经提到了我的网站 URL,您可以检查地址栏中的 URL 和来自我的产品页面的页面源的规范 URL。现在我的问题不在于我是否应该添加斜杠。我的问题是。我的产品页面是否可以使用不带斜杠的规范 URL 和带有斜杠的地址栏中的 URL? 【参考方案1】:rel="canonical"
链接元素的值(我假设这就是您所说的“规范标签”的意思)应该包含您的规范 URL。如果您在内部链接中链接/使用不同的 URL,那么您在“规范标签”中歪曲了规范 URL。
是的,两者应该是一样的。因此,您要么需要在“规范标签”中附加斜杠,要么删除内部链接中的斜杠。
如果您始终使用尾随斜杠链接到 URL,那么 Google 可能会忽略您省略它的“规范标签”。
我正在附加我的网站 .htaccess
您的.htaccess
文件在这里似乎无关紧要。您不是在此处强制(或删除)尾部斜杠。 (如果请求非规范 URL,您可以稍后添加规范重定向以强制其中一个或另一个。)
但是,无论如何,您的直接问题并不是您在.htaccess
中解决的问题。您需要更正内部链接或“规范标签”。
更新:
我在我的模板文件
<link rel="canonical" href="<?php echo current_url(); ?>" />
中有这个链接,它在根 URL 中附加了斜线,但没有为其他页面附加任何斜线。你建议我在这里写一些合乎逻辑的条件,以便斜线也可以附加到其他页面
你也许可以这样做:
<link rel="canonical" href="<?php $url = current_url(); echo preg_match('/\/$/',$url) ? $url : $url.'/'; ?>" />
如果 URL 不存在,这将在 URL 后面附加一个斜杠。虽然我确信有更多的 Codeigniter 方法可以做到这一点。 (?)
【讨论】:
@BilalArshad "它在根 URL 上附加斜杠" - 根 URL 上的尾部斜杠是强制性的(在根 URL 上有或没有尾部斜杠 - URL 实际上是相同的)。您是否手动输入内部链接的 URL 以包含尾部斜杠? @BilalArshad “你建议我写一些合乎逻辑的条件” - 我已经更新了我的答案。以上是关于文件/路径不带斜杠的规范 URL的主要内容,如果未能解决你的问题,请参考以下文章