【问题标题】:Simple Apache Rewrite Rule Giving Unwanted 404给出不需要的 404 的简单 Apache 重写规则
【发布时间】:2017-11-16 18:50:49
【问题描述】:

我有以下重写规则:RewriteRule ^/uk/(.*)$ http://www.hostname.uk/$1 [R,L]

从以下位置重写 url:

  • http://www.hostname.uk/uk/home
  • http://www.hostname.uk/home

但是,在http://www.hostname.uk/uk/home 上看到的内容不是较短的地址,而是一个空白的 404 页面。为什么是这样?我该如何解决这个问题?

【问题讨论】:

    标签: apache mod-rewrite url-rewriting


    【解决方案1】:

    您拥有的规则是从/uk/home 重定向到/home,但您没有任何东西可以在另一个方向上重写。这就是你需要的。您还应该使用我在这里所做的 301 重定向(永久)。您使用的是 302(临时 - 默认)。当http://www.hostname.uk 没有变化时,您也不需要指定它。

    RewriteRule ^/uk/(.*)$ /$1 [R=301,L]
    RewriteRule ^/(.*)$ /uk/$1 [L]
    

    我假设您在您的主要 Apache 配置中执行此操作。如果它在您的.htaccess 中,则需要更改。

    【讨论】:

    • 此规则包含在虚拟主机文件中。不幸的是,这似乎不起作用,因为我仍然收到在 www.hostname.uk/home 上找不到的 404。
    • 我已经看了好几个小时了,据我所知它应该可以工作。我在这里错过了什么吗?重写条件?
    • /uk/home 有文件吗?
    • 网页文件位于/sites/uk,所以我尝试了以下RewriteRule ^/uk/(.*)$ /$1 [R,L] RewriteRule ^/(.*)$ /sites/uk/$1 [L],但这给了我一个403 Forbidden页面和一个额外的404错误。
    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多