我正在尝试将一些动态 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/