我需要在我的PHP网站上重写网址,但我不确定语法。
我想重定向:
'some_url?id=1' => 'new_url/1'
当用户输入此内容时:
'new_url/1'
我希望他的后端重定向到:
'some_url?id=1'
更新:我的最后一次尝试:
RewriteRule /site/?id=$1 /site/$1
答案 0 :(得分:2)
您可以使用:
RewriteEngine on
RewriteBase /
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+some_url\?id=([^\s&]+) [NC]
RewriteRule ^ /new_url/%1? [R=301,L,NE]
# internal forward from pretty URL to actual one
RewriteRule ^new_url/(.+?)/?$ some_url?id=$1 [L,QSA,NC]
答案 1 :(得分:0)
您无法在重写规则中匹配查询字符串。您需要使用重写条件。
与()
匹配的内容可以在重写规则中使用%n
表示法(而不是$n
。
所以你正在寻找的东西是这样的:
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^some_url($|/) /new_url/%1?
在这里演示:
http://htaccess.mwl.be?share=0e31a7bf-9711-533d-896b-461177c46ca2