使用.htaccess将一个网址重定向到另一个网址

时间:2013-08-03 07:31:38

标签: apache .htaccess

我正在尝试重定向一个完整的网址

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]

但这不起作用,而是说我要求的网址是“禁止”。

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

4 个答案:

答案 0 :(得分:6)

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

Redirect 301 /en/php/project.html http://www.example.org/newpage.html

答案 1 :(得分:3)

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

您需要2条规则。一个将丑陋的URL重定向到漂亮的URL。一条规则需要将好的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-flag不会在.htaccess上下文中执行此操作。 END仅从Apache 2.3.9开始提供,如果在此之前的版本中使用,将导致内部服务器错误。请注意,您可能必须修改第二条规则以指向实际文件。

您可以找到文档here

编辑:请注意,您绝不应使用PERMANENT重定向测试htaccess规则。如果你弄错了,浏览器会记住这个错误!只有在所有内容都按预期工作时才将临时重定向转换为永久重定向。

答案 2 :(得分:0)

您可以使用此规则

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

答案 3 :(得分:0)

使用RewriteEngine

RewriteEngine On
Redirect 301 http://www.domain-name.com/download/?page=download http://www.domain-name.com/download/show