Apache modrewrite htaccess重定向

时间:2018-08-28 01:46:06

标签: .htaccess mod-rewrite

我尝试了所有可以找到的变体(在Stack Overflow和其他地方找到了示例,但它们也不适合我的情况)。

这是我修改后的.htaccess文件:

DirectoryIndex index.html
RewriteEngine On

# New Try - apparently does nothing
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?fubar\.com
RewriteCond %{REQUEST_URI} ^\/?snafu\/?(.*)$
RewriteRule ^(.*) https://snafu.com/%1 [R,L]

# First try - apparently does nothing
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?fubar\.com
RewriteRule ^\/?snafu\/?(.*)$ https://snafu.com/$1 [R,L]

# this works as expected
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?fubar\.com
RewriteRule ^(.*)$ https://www.fubar.com/$1 [R,L]

我在上面展示了我尝试导致的两种方法     http://www.fubar.com/snafu 重定向到     http://snafu.com

这两个段落都不起作用。

文件中的最后一段按预期方式工作,所以我知道Apache 做得很好。

在某些情况下,文件显然可以正常工作,但是在其他情况下,我无法弄清楚出了什么问题。

按照建议,我将上面的所有代码替换为:

DirectoryIndex index.html
Redirect 301 /snafu https://snafu.com

当我尝试浏览到http://www.fubar.com/snafu/index.html

我收到Firefox消息:页面未正确重定向 Firefox检测到服务器正在以永远无法完成的方式重定向对该地址的请求。

但是,浏览器URL窗口显示所需的目的地https://snafu.com/index.html

Chrome报告:snafu.com页面不起作用 snafu.com将您重定向了太多次。 ERR_TOO_MANY_REDIRECTS

同样,浏览器URL窗口显示所需的目的地https://snafu.com/index.html

Internet Explorer说:找不到 在此服务器上找不到请求的URL /snafu.com/index.html。

歌剧说:snafu.com页面不起作用snafu.com重定向了您太多次。

Safari表示:Safari无法打开“ https://snafu.com/index.html”页面,因为Safari无法与服务器“ snafu.com”建立安全连接

我不知道这是否重要,但是fubar.com和snafu.com都具有相同的IP地址-如果清除浏览器缓存,则可以直接导航至https://snafu.com/index.html,而不会出现问题看来Apache做得很好。

snafu.com根目录包含以下.htaccess文件,该文件似乎可以正常运行:

DirectoryIndex index.html
RewriteEngine On 

RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?snafu.fubar\.com
RewriteRule ^(.*)$ https://snafu.com/$1 [R,L]

RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?snafu\.com
RewriteRule ^(.*)$ https://snafu.com/$1 [R,L]

删除此文件不会更改任何浏览器行为。

我的初步结论是,简单的Redirect 301 / snafu https://snafu.com命令令人困惑,因为snafu和fubar都具有相同的IP地址。但是ModRewrite应该更聪明-我只是不够聪明,无法提出正确的咒语。

我要去哪里错了?我的目标是使所有引用fubar.com/snafu的现有链接都重定向到snafu.com,以使搜索引擎不会因两种不同的访问相同内容的方式而混淆。

1 个答案:

答案 0 :(得分:0)

您可以尝试在htaccess中添加它吗

Redirect 301 /snafu http://snafu.com