1

我无法让我的查询字符串工作..请帮助...我有以下网址: http ://betatest.bracknell-forest.gov.uk/help?fb_action_ids=372043216205703&fb_action_types=og.likes&fb_source=aggregation&fb_aggregation_id=288381481237582

(抱歉,该页面将不可用,因为它是一个测试内部域链接)

我想要以下网址: http ://betatest.bracknell-forest.gov.uk/help

我收到一条浏览器消息,提示“系统找不到指定的文件。” 我知道这是因为我已经进行了 mod 重写以从页面名称中删除 .htm 以返回干净的 url,但我不知道我需要做什么来接受干净的 url 并返回页面。
这是我拥有的mod重写代码:

RewriteRule ^/([\w]+)$ /$1.htm [I,L] #Any bare URL will get rewritten to a URL with .htm appended
RedirectRule ^/(.+)\.(htm)$       http://betatest.bracknell-forest.gov.uk/$1 [R=301]

RewriteCond %{QUERY_STRING} ^fb_action_ids=(.)$ #if the query string contains fb_action_ids
RewriteCond %{QUERY_STRING} !="" #if there is a query string
RewriteRule ^(.*) $1? [R=301,L]

我认为这是因为我两次使用 R=301 但不知道我需要使用什么作为替代方案。

如果我将 .htm 从 help?fb_action_ids.... 附加到 help.htm?fb_action_ids.... 这将返回所需的页面,但我需要返回未附加 url 的页面名称。

非常感谢您提前提供的任何帮助。

4

2 回答 2

0

在查看 iirf 帮助页面后确定,以下内容将删除所有查询字符串并显示干净的 url:

RewriteRule ^/(.+)\?(.+)&(.+)\.(htm)$  /$1    
RewriteRule ^/(.+)\?(.+)$       http://betatest.bracknell-forest.gov.uk/$1 [R=301]

# Any bare URL will get rewritten to a URL with .htm appended
RewriteRule ^/([\w]+)$ /$1.htm [I,L]
RedirectRule ^/(.+)\.(htm)$       http://betatest.bracknell-forest.gov.uk/$1 [R=301]

iirf 需要对正则表达式有所了解,并且它与 mod_rewite 之间似乎存在细微差别。非常感谢提供的所有帮助。

于 2012-10-15T18:16:02.550 回答
-1

这两行就可以了。我已经测试过了。

RewriteCond %{QUERY_STRING} fb_action_ids
RewriteRule ^(.*)$ $1? [R=301]

如果您有abc.htm,格式如下的 URL:“abc?fb_action_ids......”将被重定向到“abc.htm”

但是,您可以在 http.conf 中关闭 MultiView,如果将被重定向到确切的“abc”文件。

于 2012-10-09T03:35:46.710 回答