apache - 为 SEO 和漂亮的 URL 重写 map

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

我正在尝试将一些动态 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 使用重写映射来做到这一点。但是,我没有做这样的事情的经验,而且我不完全确定从哪里开始。

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

任何人都可以给我一个如何实现这一目标的例子吗?

谢谢!

马特

最佳答案

好吧,为了回答我自己的问题,要解决这个问题,您需要访问 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>

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

好了。 Apache 现在为我重写了我的 URL,由于我的重写映射,我现在有了一些漂亮的 SEO 优化链接!万岁!

关于apache - 为 SEO 和漂亮的 URL 重写 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884459/

相关文章:

wordpress - 如何编写 .htaccess 重写规则

php - 在网络服务器上设置 PHP 文档根目录

java - 将具有简单、索引、嵌套或组合类型属性作为键的 Hashmap 转换为 Java Bean

php - 使用 PHP 和 MySQL 写博客

php - 在 ssl 过期后强制将 https 重定向到 http

php - 如何在 htaccess Apache 中将/en/file.php 翻译成 file.php?lang=en

php - 免费、可移植、全部包含在内、合而为一、基于 php Apache 的服务器?

apache - .htaccess 中的重写对用户可见吗?

php - 带有问号和符号的 mod_rewrite(使用 PHP)

php - 我如何使用 mod-rewrite (iirf) 只重定向 php 文件