将带有查询参数的动态URL转换为静态URL

时间:2015-08-18 19:55:43

标签: .htaccess mod-rewrite

对于我网站上的动态内容,我使用带有查询变量的网址

e.g. http://www.example.com/directory/?state=NJ&city=Wayne&zip=07474 or
     http://www.example.com/directory/index.php?state=NJ&city=Wayne&zip=07474 

我想将它们转换为seo友好的静态网址

e.g. http://www.example.com/directory/Wayne-NJ-07474/

我在SO上进行了研究,发现看起来似乎是一种htaccess重写规则。

当谈到htaccess结构时,我是一个菜鸟,而我无法理解的是,我仍然可以获得与各个查询参数相关的数据,即州,城市和邮政编码。意思是我仍然可以通过_REQUEST()?

访问它们

如果有人能帮我解决我的具体案例的重写规则,我也很感激。

1 个答案:

答案 0 :(得分:2)

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On
RewriteBase /

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+directory/(?:index\.php)\?state=([^\s&]+)&city=([^\s&]+)&zip=([^\s&]+)\s [NC]
RewriteRule ^ /directory/%2-%1-%3? [R=302,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^directory/([^-/]+)-([^-/]+)-([^-/]+)/?$ directory/?state=$2&city=$1&zip=$3 [L,QSA,NC]