我正在尝试重定向&将一些动态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从其他网站上提取它。
有人能举例说明如何解决这个问题吗?
谢谢!
马特
答案 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;后一部分将被重写忽略。