【问题标题】:HTAccess Page Redirecting problem with & signHTAccess页面重定向问题与签名
【发布时间】:2010-07-18 12:10:15
【问题描述】:

我正在努力使我的网页对 seo 友好。

我的页面中有一个链接。

http://abc.com/test.php?Section=pages&title=feedback+%26+enquiry

它工作正常,标题具有“反馈和查询”的价值。我把上面的链接改成:

http://abc.com/pages/feedback+%26+enquiry.htm

我编写的 htaccess 代码如下:

Options +FollowSymLinks

RewriteEngine on
RewriteRule index.htm$ index.php
RewriteRule ^(.*)/(.*)\.htm$ /test.php?Section=$1title=$2 [R]

我希望得到相同的结果,但我很惊讶地看到错误,因为标题具有值或“feedbac”,并且新变量“enquiry”正在创建值“”

我无法找到错误。我猜它是 htaccess 转换错误。那我怎样才能让它工作呢?

我尝试了转义,但出现了内部服务器错误。我的新 htaccess 代码:

Options +FollowSymLinks

RewriteEngine on
RewriteRule index.htm$ index.php
RewriteRule ^(.*)/(.*)\.htm$ index.php?Section=$1&title=$2 [R,B]

我的 Apache 版本是:2.2.4

【问题讨论】:

  • 在查询组件中删除标点符号,它们看起来很难看,并会导致像您一样的问题。除非您希望同时存在 feedback & enquiryfeedback ! enquiry 两个标题(在这种情况下,您仍然需要一些后缀来消除 u & iu + i 的歧义)
  • 您对删除 & 和 的建议!很好,但是如果无论如何我们需要这样做呢?我们不能一直避免它

标签: .htaccess mod-rewrite seo url-rewriting


【解决方案1】:

如果您运行的是 Apache 2.2,则可以使用 B 标志来转义重写 URL 中的任何反向引用:

RewriteRule ^pages/(.*)\.htm$ /test.php?title=$1 [R,B]

否则,在Apache 2.0,你可以尝试使用内部的RewriteMapescape

RewriteRule ^pages/(.*)\.htm$ /test.php?title=${escape:$1} [R]

【讨论】:

  • 抱歉,由于我的完整网址出错,它通知了最近的更改。我已经编辑了我的帖子并写了我的完整网址,因为我在使用 [B] 选项测试您的给定脚本时遇到内部服务器错误
  • @KoolKabin:如果你要保留R,你应该确保你的替代品是/index.php?index.php?Section=$1&title=$2 [R,B],但我真的认为你不再想要R了吗?另外,您的错误日志对内部服务器错误有什么看法?
  • 我没有收到任何错误代码,只有内部服务器错误消息。可能网站管理员已配置为不显示错误代码/消息。我尝试了两种选择,但都失败了。保持逃跑将发送 title = ""
【解决方案2】:

from the mod_rewrite doc:

Apache 必须在映射 URL 之前对其进行转义,因此反向引用 ($1) 在应用它们时将被转义。

所以你的feedback+%26+enquiry.htm 被重写为test.php?title=feedback+&+enquiry,这自然会产生你看到的结果。

您可以通过在 RewriteRule 中添加 'B' (escape backreferences) 重写标志来避免反向引用:

RewriteRule ^pages/(.*)\.htm$ /test.php?title=$1 [R,B]

【讨论】:

  • 抱歉,由于我的完整网址出错,它通知了最近的更改。我编辑了我的帖子并写了我的完整网址,因为我在使用 [B] 选项测试您的给定脚本时遇到内部服务器错误
  • 确保[R,B] 中没有空格,即。 不是 [R, B].
  • 嗯....我很确定我在它们之间没有空格,但仍然出现错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多