包含多字串多个参数(mod_rewrite的)重写URL [英] Rewriting URL that contains multiple parameters with multi-word strings (with mod_rewrite)

查看:212
本文介绍了包含多字串多个参数(mod_rewrite的)重写URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图重写的页面具有多个参数和参数之一包含多个字(当提交由空格分隔)的URL。

这将是网址: www.ABCD.com/store/itemsDescr.php?categ=headbands&id=123&name=brown%20with%20black

我想的网址显示是这样的: www.ABCD.com/store/headbands/123/brown-with-black

我想这一点,但它没有工作:

 的RewriteCond%{QUERY_STRING} ^ CATEG =([^&功放;] +)[NC,OR]
的RewriteCond%{QUERY_STRING}&放大器; CATEG =([^&功放;] +)[NC]
重写规则^店/ itemsDescr \ .PHP $ $ 0 /%1

的RewriteCond%{QUERY_STRING} ^ n =([^&功放;] +)[NC,OR]
的RewriteCond%{QUERY_STRING}和ID =([^&安培;] +)[NC]
重写规则^店/ itemsDescr \的.php / [^ /] + $ $ 0 /%1

的RewriteCond%{QUERY_STRING} ^名=([^&功放;] +)[NC,OR]
的RewriteCond%{QUERY_STRING}&放大器;名称=([^&功放;] +)[NC]
重写规则^店/ itemsDescr \的.php /([^ /] + / [^ /] +)$ http://www.ABCD.com/store/$1/%1/? [L,QSA,NC]
 

任何帮助将是非常美联社preciated!

注:在这个规则我想要实现,我已经有这等规则的另一页,在情况下,它可以产生冲突:

 的RewriteCond%{THE_REQUEST} ^ [AZ] {3,} \ S / +(店)/index\.php\?categ =([^ \ s] +) NC]
重写规则^ / 1%/ 2%? [R = 301,L]

的RewriteCond%{} REQUEST_FILENAME!-f
重写规则^店/(.+?)/?$ /store/index.php?categ=$1 [L,QSA,NC]
 

解决方案

的httpd.conf 启用了mod_rewrite和.htaccess,然后把这个code在< $ C C>的.htaccess $ DOCUMENT_ROOT 目录下:

 选项+了FollowSymLinks -MultiViews
#开启mod_rewrite的上
RewriteEngine叙述上
的RewriteBase /

的RewriteCond%{QUERY_STRING} ^ CATEG =([^&安培;] +)安培;编号=([^&安培;] +)及名称=([^&安培;] +)$ [NC]
重写规则^(店)/itemsDescr\.php$ / $ 1/1%/ 2%/ 3%? [R = 302,L,NC,NE]

重写规则^(存储)/([^ \ s] +)\ S([^ \ s] +)/ $ 1 / $ 2- $ 3 [R = 302,L,NC]

重写规则^(存储)/([^ \ s] +)\ S(+)/ $ 1 / $ 2- $ 3 [L,NC]

的RewriteCond%{} REQUEST_FILENAME!-f
重写规则^(存储)/([^ /] +)/([^ /] +)/ /$1/itemsDescr.php?categ=$2&id=$3 [L,QSA,NC,NE]
 

Was trying to rewrite the URL of a page that has multiple parameters and one of the parameters contains multiple words (separated by spaces when submitted).

This would be the URL: www.ABCD.com/store/itemsDescr.php?categ=headbands&id=123&name=brown%20with%20black

I would like the URL to show like this: www.ABCD.com/store/headbands/123/brown-with-black

I tried this, but it did not work:

RewriteCond %{QUERY_STRING} ^categ=([^&]+) [NC,OR]
RewriteCond %{QUERY_STRING} &categ=([^&]+) [NC]
RewriteRule ^store/itemsDescr\.php$ $0/%1

RewriteCond %{QUERY_STRING} ^id=([^&]+) [NC,OR]
RewriteCond %{QUERY_STRING} &id=([^&]+) [NC]
RewriteRule ^store/itemsDescr\.php/[^/]+$ $0/%1

RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC,OR]
RewriteCond %{QUERY_STRING} &name=([^&]+) [NC]
RewriteRule ^store/itemsDescr\.php/([^/]+/[^/]+)$ http://www.ABCD.com/store/$1/%1/? [L,QSA,NC]

Any help would be much appreciated!

NOTE: Before this rule I want to implement, I already have this other rule for another page, in case it can create conflict:

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(store)/index\.php\?categ=([^\s]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f    
RewriteRule ^store/(.+?)/?$ /store/index.php?categ=$1 [L,QSA,NC]

解决方案

Enable mod_rewrite and .htaccess through httpd.conf and then put this code in your .htaccess under DOCUMENT_ROOT directory:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^categ=([^&]+)&id=([^&]+)&name=([^&]+)$ [NC]
RewriteRule ^(store)/itemsDescr\.php$ /$1/%1/%2/%3? [R=302,L,NC,NE]

RewriteRule ^(store)/([^\s]+)\s([^\s]+)$ /$1/$2-$3 [R=302,L,NC]

RewriteRule ^(store)/([^\s]+)\s(.+)$ /$1/$2-$3 [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(store)/([^/]+)/([^/]+)/ /$1/itemsDescr.php?categ=$2&id=$3 [L,QSA,NC,NE]

这篇关于包含多字串多个参数(mod_rewrite的)重写URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆