4

当我试图重定向一个完整的 URL

http://www.domain-name.com/download/?page=download

到这个网址

http://www.domain-name.com/download/show

为此,我添加了此代码

rewriterule http://www.domain.com/download/?page=download(.*)$ http://www.domain.com/download/show$1 [r=301,nc]

但这不起作用,而是说我请求的 URL 显示“禁止”。

任何人都可以为此提供任何解决方案。

4

4 回答 4

16

使用 htaccess 文件将一个 URL 重定向到另一个 URL:

Redirect 301 /en/php/project.html http://www.example.org/newpage.html
于 2015-02-02T12:56:06.620 回答
5

RewriteRule 不包含查询字符串,也不包含 http-host。除此之外,第一个参数是一个正则表达式模式。如果没有 http 主机,您将匹配download/page=download(etc)downloadpage=download(etc)

你需要2条规则。一种将丑陋的网址重定向到漂亮的网址。一条规则需要将 nice url 重写为实际工作的 url:

#Rewrite ugly url to nice url
RewriteCond %{QUERY_STRING} ^page=download&?(.*)$
RewriteRule ^download/?$ download/show?%1 [R,L]

#Now get the nice url to work:
RewriteRule ^download/show/?$ download/?page=download [QSA,END]

第二条规则使用 QSA 标志,这意味着它将原始查询字符串附加到重写器中的查询字符串。END 标志停止所有重写,因为 L 标志在 .htaccess 上下文中不这样做。END 仅从 Apache 2.3.9 开始可用,如果在之前的版本中使用会导致内部服务器错误。请注意,您可能必须修改第二条规则以指向实际文件。

您可以在此处找到文档。

编辑:请注意,您永远不要使用永久重定向测试 htaccess 规则。如果你犯了一个错误,浏览器会记住这个错误!仅当一切都按您预期的那样工作时,才将临时重定向转换为永久重定向。

于 2013-08-03T07:54:09.610 回答
2

你可以使用这个规则

Redirect /download/?page=download http://www.domain-name.com/download/show
于 2019-01-29T11:38:25.360 回答
1

使用RewriteEngine

RewriteEngine On
Redirect 301 http://www.domain-name.com/download/?page=download http://www.domain-name.com/download/show
于 2019-09-23T09:42:03.963 回答