使用.htaccess从URL中删除页码

时间:2013-08-20 15:52:57

标签: apache .htaccess mod-rewrite

我需要来自表单网址的页码:

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] 

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

1 个答案:

答案 0 :(得分:1)

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

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

网址的#entryXXXX部分是片段,服务器实际上从未见过。它只是客户端/浏览器端的事情。希望浏览器足够聪明,可以在重定向后重新附加片段。