htaccess 如何捕获根索引调用

问题描述 投票:0回答:1

我的网站根目录中有一个 .htaccess,需要捕获所有 .php 页面并将它们重定向到某个地方。

RewriteCond %{REQUEST_URI} !/notice.php$
RewriteCond %{REQUEST_FILENAME} \.php$ 
RewriteRule $ /notice.php [R,L]

这个工作正常,但是当调用网站默认根目录时会失败(默认根目录是index.php)。

所以; https://www.website.com/index.php --> 成功重定向到notice.php 但 https://www.website.com/ 没有,因此显示的是 index.php 页面的内容。

我尝试过的事情:

RewriteCond %{REQUEST_URI} !/notice.php$
RewriteCond %{REQUEST_FILENAME} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} ^/$
RewriteRule $ /notice.php [R,L]

这行不通。

RewriteCond %{REQUEST_URI} !/notice.php$
RewriteCond %{REQUEST_FILENAME} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.*$
RewriteRule $ /notice.php [R,L]

这也行不通。

当未指定根文件夹文件名时,如何设置 .htaccess 以捕获默认索引加载器?我无法使用

DirectoryIndex notice.php
,因为此重定向对时间敏感(仅适用于某些日期和时间)。

例如

RewriteCond %{TIME} >=20241130230000
RewriteCond %{REQUEST_URI} !/notice.php$
RewriteCond %{REQUEST_FILENAME} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} ^.$
RewriteRule $ /notice.php [R,L]
.htaccess
1个回答
0
投票

我一发布这个问题就找到了答案;

感谢 Stack Overflow 迫使我找到解决方案:

RewriteCond %{REQUEST_FILENAME} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} !-f

将条件设置为“如果不是文件”,这是“..../”请求的默认条件。

所以;

RewriteCond %{REQUEST_URI} !/notice.php$
RewriteCond %{REQUEST_FILENAME} \.php$ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule $ /notice.php [R,L]

有效!

© www.soinside.com 2019 - 2024. All rights reserved.