Iam*_*m J 4 php apache .htaccess redirect url-rewriting
我有一个客户,他的网站很旧,没有“漂亮”的网址。所以目前看起来是这样的:
http://www.domain.com/?w=42&a=5&b=3
Run Code Online (Sandbox Code Playgroud)
参数值仅为数字。
现在,他们希望将旧网站移动到子域,而主 (www) 域将成为新网站(带有 SEO 友好 URL 的 WP)的所在地。
现在我想做的是将所有到达/?w=<num>(并且仅那些)的请求重定向到sub.domain.com/?w=<num>,以便现有链接(主要来自 Google)被重定向到子域页面,而新页面可以通过漂亮的 URL 提供新内容。
我试过这个:
# This works, but redirects the entire www.domain.com
# to sub.domain.com no mather what
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://sub.domain.com/$1 [R=301,L]
# But this DOESN'T work
RewriteRule ^/?w(.*) http://sub.domain.com/?w$1 [R=301,L]
# Also tried to redirect 'by hand', but DIDN'T work either
Redirect 301 /?w=42 http://sub.domain.com/?w=42
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我到处搜索,但最后总是得到这样的建议。或者也许我只是在搜索错误的关键字......
谢谢你!
您无法与重写规则或重定向指令内的查询字符串进行匹配。您需要与%{QUERY_STRING}变量进行匹配。尝试:
RewriteCond %{QUERY_STRING} (^|&)w=[0-9]+(&|$)
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
请注意,查询字符串会自动附加到规则目标的末尾。
| 归档时间: |
|
| 查看次数: |
12567 次 |
| 最近记录: |