Htaccess SEF网址重写

时间:2016-08-30 12:02:35

标签: php apache .htaccess url-rewriting get

可能是一个简单的解决方案,但我们正在为客户的adwords帐户创建一些目标网页。我们创建了页面,并使用PHP中的get请求插入区域和关键字。

网址目前看起来像这样:

http://www.customersdomain.co.uk/index.php?keyword=locksmith&area=london

基本上我正在寻找一个允许输入这个网址的htaccess重写规则:

http://www.customersdomain.co.uk/areas/locksmith-london.html

认为锁匠的动态内容&伦敦将进入该页面,并可以用其他关键字替换,如锁匠和&伯明翰。我们知道这对于seo目的来说是不好的做法,但是这个客户有其他原因“希望在他的客户看来是本地的”。

任何帮助都会很棒,因为这不是我的强项。

1 个答案:

答案 0 :(得分:0)

由于您是管理员而根本不需要htaccess,因此可以在virtualhost上下文中使用类似的内容:

RewriteEngine on
RewriteRule ^/areas/(.+)-(.+)\.html$ /index.php?keyword=$1&area=$2 [L]

RewriteRule ^/areas/([^-]+)-(.+)\.html$ /index.php?keyword=$1&area=$2 [L]

这是一种非常基本的方法,但两者都有效,如果你有一组有限的值,你可以将它们括在括号中,如(london|paris|gotham)。还有更复杂的例子,特别是如果你有可能性并且想要非常具体地匹配它们你甚至可以使用RewriteMap。但是对于初学者尝试这些,以确保他们正在使用[R,L]来实际重写它们并看看它们在浏览器中是如何真正改变的,然后一旦你确定它们有效,你就可以删除R标志以便它们得到在内部重写。

在两次测试中,请确保您清除缓存,或者只是尝试“curl http://www.customersdomain.co.uk/areas/locksmith-london.html”以确保浏览器中的缓存不会干扰您的测试。

请务必查看mod_rewrite documentation

哦,关于htaccess。我知道你读到了某处使用.htaccess,这个世界上的每个人似乎都认为这是一个添加重写的神奇文件,但事实是它只适用于没有访问HTTPD主配置文件的用户,它增加了复杂性它发生在per-dir上下文中,它给服务器增加了很多开销。如果您仅通过不使用服务器来提供服务器的最大性能,您的客户将会感激不尽。祝你好运!