【问题标题】:rewritemap for SEO and pretty URLs用于 SEO 和漂亮 URL 的 rewritemap
【发布时间】:2011-08-18 13:45:49
【问题描述】:

我正在尝试将一些动态 PHP URL 重定向和重写为漂亮且对 SEO 友好的 URL。我已经通过 .htaccess 使用以下代码成功地做到了这一点:

RewriteCond %{QUERY_STRING} ^somevar=green&nodescription=([a-zA-Z0-9_-]*)$
RewriteRule (.*) /green\/%1\/? [L,R=301]

RewriteRule ^green/([^/]*)/$ /script.php?somevar=green&nodescription=$1&rewrite=on [L]

这会创建一个 有点 漂亮的 URL,如下所示:

 http://www.mysite.com/green/aA43-/

正如我所说,这绝对可以正常工作。除了一件事。参数nodescription 包含一组非描述性的随机字母、数字和其他字符。

我想将 nodescription 参数重写为更具描述性的参数。我知道我可以通过 Apache 使用 rewritemap 来做到这一点。但是,我没有做这种事情的经验,而且我不完全确定从哪里开始。

通常我会简单地更改script.php,使其包含更多描述性参数,但这次我无法控制脚本;我正在使用 cURL 从另一个站点拉它。

谁能给我一个例子来说明如何做到这一点?

谢谢!

马特

【问题讨论】:

  • 进一步研究表明需要访问 apache httpd.conf 配置文件才能打开 rewritemap 功能。不幸的是,我无权访问此文件(共享主机)。所以,我仍在寻求解决这个问题的方法。任何帮助都非常感激:)

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


【解决方案1】:

好吧,要回答我自己的问题,要解决这个问题,您需要访问 apache 服务器上的 httpd.conf 文件。我的共享托管公司不允许访问此文件(我怀疑是否允许您访问)。

所以我硬着头皮买了一个 VPS。我将在此处发布我为设置重写映射而采取的步骤,希望它能帮助迷失的灵魂:) 好的,开始...

我的 VPS 安装了 WHM,所以在 WHM 中我去了:

服务器配置 >> Apache 配置 >> 包括编辑器

预虚拟主机包括 >> 所有版本

此功能会获取您输入的任何文本并将其包含在您的 httpd.conf 文件中,而不必担心它会在稍后阶段被覆盖。如果您的服务器上没有 WHM,那么您可以直接将文本添加到您的 httpd.conf 文件中;确保它位于任何虚拟主机之前。

好的,所以我包含了以下地图声明和重写规则:

#Map to redirect (swaps key and value)
RewriteMap rwmap txt:/home/*/public_html/rdmap.txt

<Directory /home/*/public_html/test>

Options All -Indexes
RewriteEngine on

RewriteRule ^url/([^/]*)/$ /script.php?foo=${rwmap:$1|$1}&rewrite=on [L]

</Directory>

实际的映射是一个包含键/值对的简单文本文件——您需要将此文件放在RewriteMap rwmap txt:/home/*/public_html/rdmap.txt 中声明的目录中。

然后就可以了。 Apache 现在为我重写了我的 URL,并且由于我的重写地图,我现在有了一些漂亮而漂亮的 SEO 优化链接!万岁!

【讨论】:

  • 谢谢!我也有同样的情况。我的主机不允许 RewriteMap,所以我将不得不使用 VPS!这将很有用:)
【解决方案2】:
RewriteEngine on
RewriteRule ^green/([^/]*)/(.*)$ /script.php?somevar=green&nodescription=$1&rewrite=on [L]

此重写将允许您传递与重写无关的“任意文本”。例如:

http://www.mysite.com/green/aA43-/some-seo-boosting-title

仍将正确地重新路由到 script.php;后一部分将被重写忽略。

【讨论】:

  • 感谢您的回答。这实际上是一个不错且简单的解决方案,它正盯着我看,但我没有看到。问题是我想完全摆脱 URL 的 /aA43-/ 部分,用 /some-seo-boosting-title 代替它。我认为您的解决方案无法实现这一目标?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多