我需要来自表单网址的页码:
http://mydomain.com/index.php?showtopic=XXXX&page=XXXX&#entryXXXX
所以他们成了
http://mydomain.com/index.php?showtopic=XXXX&#entryXXXX
其中XXXX是整数
我之前尝试过:
RewriteEngine on
RewriteRule ^(.*)showtopic=([0-9]+)&page=([0-9]+)(.*) http://mydomain.com/index.php?showtopic=$1$3 [QSA,L,R=301]
但无济于事。所以我把它缩短为:
RewriteEngine on
RewriteRule ^(.*)&page=([0-9]+)(.*)$ $1&$3 [QSA,L,R=301]
但仍然现在。正则表达式有什么问题吗?
答案 0 :(得分:1)
您无法在重写规则中与查询字符串匹配,您需要在重写条件内匹配%{QUERY_STRING}
var:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^showtopic=([^&]+)&page=([^&]+)(&.*)?$
RewriteRule ^index\.php$ /index.php?showtopic=%1%3 [L,R=301]
网址的#entryXXXX
部分是片段,服务器实际上从未见过。它只是客户端/浏览器端的事情。希望浏览器足够聪明,可以在重定向后重新附加片段。