【问题标题】:Right Link for call URL Friendly呼叫 URL 友好的正确链接
【发布时间】:2021-06-30 05:22:01
【问题描述】:

我不知道我是否正确编写了与 URL 友好一起使用的链接,因为对我来说不起作用

其实我用的是这种链接:

<a href="index.php?id=1578&title=Mike_Manager_Best&name=Mike">Test</a>

如果我使用这种链接不会改变 url 中的任何内容,最终显示相同

如果你能看到我的 .htaccess,则 url 必须重写,但不要更改

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \s/index\.php\?id=([0-9]+)&title=([^\s&]+)&name=([^\s&]+)\s [NC]
RewriteRule ^ %1/%2/%3? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9]+)/([^/]+)/(.+)/?$ index.php?id=$1&title=$2&name=$3 [L]

</IfModule>

我的问题是我的链接是否适合与我的 .htaccess 一起使用,并且 URL 友好,因为当我在 url 部分的browser中单击链接时,不显示任何更改,例如:

http://test.com/1578/Mike_Manager_Best/Mike

感谢高级帮助

【问题讨论】:

  • 我的问题不同,我的问题是我是否正确放置链接,我会在链接中谈论我的格式,或者我需要使用其他格式放置链接,以使作品 url 友好

标签: php apache .htaccess friendly-url


【解决方案1】:

tl;dr 您的内部链接应采用以下形式:

<a href="/1578/Mike_Manager_Best/Mike">Test</a>

.htaccess 不会更改页面 HTML 源代码中的实际链接。因此,如果您检查页面上的链接(或将鼠标悬停在链接上,以查看 resolved URL),它仍然与您编写的一样。您的所有.htaccess 所做的只是在外部将“旧” URL 重定向到规范 URL。

但是,您的链接也是相对(没有斜线前缀),因此当浏览器尝试相对于当前 URL 解析它时,这将导致其他问题(它不起作用,除非您的所有页面 URL 都在文档根目录中)。应该是/index.php?id=123...(带有斜线前缀)。

您需要将所有内部链接实际更新为所需的根相对(或绝对)规范 URL

例如,而不是这个:

<a href="index.php?id=1578&title=Mike_Manager_Best&name=Mike">Test</a>

应该是:

<a href="/1578/Mike_Manager_Best/Mike">Test</a>

.htaccess 中的“重定向”仅在更改现有 URL 结构时才需要。重定向您无法控制的搜索引擎和第 3 方反向链接。如上所述,您的所有内部链接都应链接到规范 URL。

如果您不更改内部链接,那么...

  • 您实际上并未更改 URL。用户仍然可以在页面上以及将鼠标悬停在链接上时看到“旧”U​​RL。这可能是他们共享的 URL。
  • 每当用户点击您的某个链接时,他们都会从外部重定向到规范 URL。这对用户来说可能很慢,并且会使访问服务器的请求数量增加一倍。 (好吧,它是 301,所以它应该被浏览器缓存,但是,嘿 - 它只是不好。)
  • 您正在向搜索引擎发送混合信号。搜索引擎将抓取它在您的 HTML 源中找到的 URL(即index.php?id=123...),然后触发重定向到规范 URL。这将对SEO不利。您应该始终直接链接到规范网址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多