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

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

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友好的静态URL

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

我研究了SO,发现似乎是一个htaccess重写规则是要走的路.

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

如果有人能帮我解决我的具体案例的重写规则,我也将不胜感激.

最佳答案 您可以在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]
点赞