2014-03-05 29 views
1

在LAMP堆栈环境中工作时,存在以下问题。Apahce/.htaccess - 将所有请求重定向到该页面使用的资产以外的单个页面

我希望所有向Apache发出的请求都返回一个特定的页面(即all> request将返回fixing.php)。然而,fixing.php本身会请求一些资源>(图像,css文件)以正确显示。

实施例:

从Apache的角度来看,用户请求: apple.html

阿帕奇使用。htaccess redirectMatch返回 fixing.php

当fixing.php在浏览器上呈现时,浏览器请求两个资源style.css和background.jpg。然而Apache收到这些reqeuest,并且仍然只是返回fixing.php(因此你得到一个循环)。

如何配置.htaccess文件执行此操作?

我已经试过:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^/fixed.php [L,R=301] 

的依据是已经存在的唯一文件是在fixed.php和style.css文件 - 通过我的逻辑 - 如果请求的文件是不是一个文件(即不存在),或者某个reqeusted目录是不存在的 - 返回fixed.php

+0

你真的想重定向到'fixed.php'?或者干脆改写它?换句话说,浏览器是否仍然显示'apple.html'? –

+0

重定向,它不应该显示apple.html或banana.html或cherry.html,任何请求应该返回fixed.php – sauj

回答

1

您可以使用:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_REFERER} !fixed\.php 
RewriteRule^/fixed.php [L,R=301] 
+0

完美!谢谢。 – sauj

+0

很高兴知道,您是否可以通过点击我答案左上角的刻度线标记答案。 – anubhava

+0

昨天我点击了那个刻度(大绿色刻度)... – sauj

相关问题