【问题标题】:Get page id value and display in URL via .htaccess通过 .htaccess 获取页面 id 值并显示在 URL 中
【发布时间】:2015-11-13 01:41:09
【问题描述】:

我试图通过在我们的 .htaccess 文件中使用重写来显示 SEO 友好的 URL,但我无法让它工作(我在 StackExhange 和其他地方研究了许多相关主题,但无济于事)。我想获取此页面上 id 的值...

http://199.119.123.135/info/tool_surety_company.php?id=1

...并在 URL 中显示 id 值,而不是丑陋的“tool_surety_company.php?id=1”。

我想要这样的结果:http://199.119.123.135/info/travelers-group

我在我的 .htaccess 文件中使用以下代码:

RewriteCond %{THE_REQUEST} \ /+info/tool_surety_company\.php\?id=([^&]+)
RewriteRule ^ /info/%1/? [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^^info/([^/]+)/?$ /info/tool_surety_company.php?id=$1 [QSA]

但我收到 404 错误。

有什么想法吗?提前致谢!

【问题讨论】:

  • travelers-group 199.119.123.135/info/1/travelers-group 类似的东西
  • 从最后一个重写规则中删除双^,只留下一个
  • 还在最后一条规则中添加 L 标志
  • 感谢您的回复。我尝试了您的建议,但仍然返回相同的错误。知道为什么吗?
  • 我猜你得到的是 404,因为服务器不知道要为你引导用户访问的新 URL 加载什么。

标签: php apache .htaccess mod-rewrite


【解决方案1】:

我可能在这里误解了一些东西,但我相信服务器端代码需要一种机制来为新的“seo 友好 url”加载正确的内容。换句话说,当然,您可以重定向用户以显示不同的 url,但是服务器如何知道要为该新 url 加载哪些内容?

这里有一个很好的资源来整理一个简单的例子。 https://moz.com/ugc/using-mod-rewrite-to-convert-dynamic-urls-to-seo-friendly-urls

更新:

从这里 - https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules

疑难解答

404 未找到

仔细检查浏览器中的新 URL。它是否匹配一个文件 存在于服务器上重写指定的新位置 规则?您可能必须使您的重写规则更广泛(您可能是 能够从第二个字符串中删除 $1 )。这将引导 重写到第二个字符串中给出的主索引页。或者您 可能需要将文件从旧位置复制到新位置。

换句话说,您收到 404 的唯一原因是服务器没有找到在您的浏览器地址栏中可见的 URL 中定义的请求文件。

使用 Apache 模块 mod_rewrite 启用 Htaccess 重写, 这是最强大的 Apache 模块和功能之一 可用。 Htaccess 通过 mod_rewrite 重写提供了特殊的 能够在内部重写请求以及重定向请求 外部。

当浏览器地址栏中的网址在一段时间内保持不变时 请求它是内部重写,当 url 更改外部 正在发生重定向。这是第一个,也是第一个 人们在学习 mod_rewrite 时遇到的最大心理障碍。

更多信息来自这里: http://www.askapache.com/htaccess/modrewrite-tips-tricks.html

【讨论】:

  • 嘿贾斯汀。 id 值是从我们的数据库中提取的,并且已经为页面标题和页眉动态显示。此页面link 的 id 值为“Travelers Group”。我说得有道理吗?
  • 我也尝试了您提供的链接中的示例一,但它不起作用:(
  • 对,但是您的网站如何知道要为“/info/travelers-group”加载什么?没有内置机制将新创建和请求的 url 反转为原始 url 的 ID 值。需要一些 PHP 脚本来解析新 URL 参数并为新 url 加载新内容
  • 据我了解,htaccess 文件在 php 页面之前被命中,因此重定向会在 php 内容实际呈现之前发生
  • 我在link 有一个非常相似的重写工作。 “pennsylvania”和“harrisburg”都通过拉取“state”和“city”值来重写。上面页面的实际 URL 是jwsuretybonds.com/surety-bonds/city.php?state=37&city=13。我不应该能够完成同样的事情吗?
猜你喜欢
  • 2011-12-10
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 2016-10-06
  • 2019-03-24
  • 2014-11-10
相关资源
最近更新 更多