如果用户在浏览器中访问此网址(http://domain.com/products/view-product.php?productID=21
),则应显示页面http://domain.com/new/view-product.php?pID=21
我尝试了以下代码,但它无法正常工作,所以请帮我解决。
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{THE_REQUEST} products/view-product.php
RewriteRule ^products/view-product.php?productID=21$ new/view-product.php?pID=21 [R=301,L]
产品/ view-product.php实际存在于服务器中,我仍想将其重写为我现在设计的新页面。
答案 0 :(得分:3)
您无法在重写规则中与查询字符串(?
之后的所有内容)进行匹配。只有URI用于匹配该正则表达式。您需要使用条件:
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{THE_REQUEST} products/view-product.php\?productID=21($|\ |&)
RewriteRule ^products/view-product.php$ /new/view-product.php?pID=21 [R=301,L]
答案 1 :(得分:2)
您可以使用%{QUERY_STRING}
和RewriteRule
变量匹配查询字符串。查询字符串参数没有到达RewriteEngine on
RewriteCond %{QUERY_STRING} ^productID=21$
RewriteRule ^products/view-product\.php$ /new/view-product.php?pID=21 [R=301,L]
。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^productID=([0-9]+)$
RewriteRule ^products/view-product\.php$ /new/view-product.php?pID=%1 [R=301,L]
或者,如果您想重定向所有productID'
hduser@localhost:/usr/local/hadoop/etc/hadoop$ yarn node -list
15/05/27 07:23:54 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.111.72:8040
Total Nodes:2
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
localhost.localdomain:32991 RUNNING localhost.localdomain:8042 0
localhost.localdomain:55352 RUNNING localhost.localdomain:8042 0
答案 2 :(得分:0)
获取productID的值,然后重定向到新的URL。