文件/路径不带斜杠的规范 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 中解决的问题。您需要更正内部链接或“规范标签”。


更新:

我在我的模板文件&lt;link rel="canonical" href="&lt;?php echo current_url(); ?&gt;" /&gt; 中有这个链接,它在根 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的主要内容,如果未能解决你的问题,请参考以下文章

网络资源路径的双斜杠//和双反斜杠\的区别

71. 简化路径

url路径与用斜杠关闭的路径是不是有明显区别?

从批处理文件输入中删除尾部斜杠

解析没有路径但在查询中带有斜杠的 URL

如何防止 apache 在 URL 路径中使用单斜杠减少双斜杠?