SEO和漂亮网址的重写地图

时间:2011-05-04 13:49:42

标签: 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从其他网站上提取它。

有人能举例说明如何解决这个问题吗?

谢谢!

马特

2 个答案:

答案 0 :(得分: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优化链接! Hoorah!

答案 1 :(得分:0)

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;后一部分将被重写忽略。