[英]RewriteMap not working for urls with query params
似乎rewritemap沒有考慮匹配URL中的查詢參數。 請提出解決方案。
我在httpd.conf文件中的設置:
RewriteMap redirects dbm=db:/usr/local/apache/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
重定向文件有URL Lile
/same_url/ http://mysite.com/
/same_url/?q=1 http://mysite.com/q2=1
/same_url/?q=2 http://mysite.com/q2=2
/same_url/?q=3 http://mysite.com/q2=3
但是所有4個網址僅被定向到http://mysite.com 。 因此,似乎只針對非查詢部分進行了匹配。
請幫忙。
查看您的RewriteMap,看來您不需要使用地圖。 您可以在沒有地圖的情況下進行操作:
RewriteCond %{QUERY_STRING} ^q\=([0-9]+)$
RewriteRule ^/same_url/(.*)$ http://example.com/q2=%1 [redirect=permanent,last]
請注意RewriteRule中的%1
,它反向引用RewriteCond中的匹配項。
如果仍然要使用重寫映射,則可能必須將查詢字符串“轉換”為路徑中的某些內容。規則可能是:
RewriteCond %{QUERY_STRING} ^q\=([0-9]+)$
RewriteRule ^/(.*)$ /$1/q=%1 <-- here the GET param is transformed to something in the path
RewriteMap redirects dbm=db:/usr/local/apache/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
您必須將地圖更改為不考慮GET參數的內容:
/same_url/ http://example.com/
/same_url/q=1 http://example.com/q2=1
/same_url/q=2 http://example.com/q2=2
/same_url/q=3 http://example.com/q2=3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.