给出不需要的 404 的简单 Apache 重写规则
Posted
技术标签:
【中文标题】给出不需要的 404 的简单 Apache 重写规则【英文标题】:Simple Apache Rewrite Rule Giving Unwanted 404 【发布时间】: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 页面。为什么是这样?我该如何解决这个问题?
【问题讨论】:
【参考方案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错误。
以上是关于给出不需要的 404 的简单 Apache 重写规则的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 重定向到一个路由,但是 apache 给出 404 错误
带有 WSGI 的 Django 在 Apache VirtualHost 后面给出 404
tomcat-jk-apache整合后 地址UrlRewriter 重写乱码的问题
需要 .htaccess 帮助:不存在的 url 301 重定向到 404,而不是直接给出 404