【问题标题】:htaccess rewrite URL if domain doesn't equal and subfolder is this如果域不等于并且子文件夹是这个,htaccess 重写 URL
【发布时间】:2016-10-02 20:26:55
【问题描述】:

我正在尝试进行重写,需要帮助...

我有一组网站,哪些域是这样的

example.com
example.co.uk
example.ie
example.com/gm

网站的设置方式意味着所有域都可以显示 .com/gm 内容(GM 没有自己的域,我们希望它只从 .com 域提供)

所以我试图将使用不正确 URL 的任何人重定向到带有 gm 子文件夹的正确 TLD。例如:

going to www.example.co.uk/gm would 301 to www.example.com/gm

我目前有这个:

RewriteCond %!{HTTP_HOST}:{REQUEST_URI} !^example.com:gm$ [L,R]
RewriteRule ^(.*)$ https://www.example.com/gm$1 [R=301,L]

这显然不开心

欣赏正确方向的一点,基本上从我可以告诉我需要一个规则来检查域不等于 .com 如果他们试图访问 /gm/ 并将它们重定向到 .com/gm /

谢谢!!

【问题讨论】:

  • 该代码已方式关闭。你从哪里得到的?

标签: php apache .htaccess redirect mod-rewrite


【解决方案1】:

更容易检查是否在 RewriteRule 中请求了 /gm/ 路径,并在其前面加上一个检查主机名的 RewriteCond 前缀——应该这样做:

RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^(gm/.*)$ https://www.example.com/$1 [R=301,L]

【讨论】:

  • 非常感谢您帮助我,但这似乎并没有重定向任何东西 :( 抱歉,我不太擅长 htaccess 的东西 d 我不确定问题可能是什么 - 如果这个是为了工作
  • 从外部调试可没那么容易。我们不知道您的 .htaccess 等文件中还有什么内容。您可以启用重写日志记录以更详细地了解内部发生的情况。
【解决方案2】:

您的 htaccess 充满了语法错误。

尝试以下方法:

RewriteCond %{HTTP_HOST} ^(www\.)?example.co.uk$
RewriteCond %{REQUEST_URI} ^/gm/
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

这将重定向

  • example.co.uk/gm

  • example.com/gm

在测试之前清除浏览器的缓存。

【讨论】:

  • :(我不知道发生了什么,但这似乎并没有重定向任何东西:(即使我把它放在 htaccess 的第一个位置(在任何其他重写之前)
  • 重定向在我的系统上运行良好。看起来 mod_rewrite 没有启用。
  • 是的,在 htaccess 中还有很多其他的重定向和重写 :(
猜你喜欢
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 2012-08-20
  • 2012-04-03
  • 2013-10-21
  • 2014-06-30
相关资源
最近更新 更多