0

我需要来自表单 URL 的页码:

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] 

但仍然没有。正则表达式有什么问题吗?

4

1 回答 1

1

您无法匹配重写规则中的查询字符串,您需要匹配%{QUERY_STRING}重写条件中的 var:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^showtopic=([^&]+)&page=([^&]+)(&.*)?$
RewriteRule ^index\.php$ /index.php?showtopic=%1%3 [L,R=301]

URL的#entryXXXX一部分是一个片段,而服务器实际上从来没有看到它。它只是客户端/浏览器端的事情。希望浏览器足够聪明,可以在重定向后重新附加片段。

于 2013-08-20T15:59:52.877 回答