.htaccess如果找不到特定文件则提供其他文件

时间:2017-03-30 22:39:28

标签: .htaccess

如果我有/index.html并且用户转到domain.tld或domain.tld / index.html,我希望他们获取该页面。 (默认行为)

如果我没有/index.html但我确实有/ content.txt我想提供页面/makeindex.php但不要更改网址。

如果我没有/index.html或/content.txt,我想提供/nocontent.php但不要更改网址。

到目前为止,我有:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /makeindex.php [L]

但我不知道如何将其限制为domain.tld或domain.tld / index.html,我也不知道如何创建这两步流程首先检查content.txt如果我服务/makeindex.php或者回退到/nocontent.php,如果这两个文件都不存在。

1 个答案:

答案 0 :(得分:1)

您可以使用以下规则,将其放在htaccess的顶部:

RewriteEngine on

#if /index.html exists serve it as a directory index and main page
RewriteCond %{DOCUMENT_ROOT}/index.html -f
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ /index.html [L]
#if content.txt exists , use makeindex.php as directory index
RewriteCond %{DOCUMENT_ROOT}/content.txt -f
RewriteRule ^$ /makeindex.php [L]
#else set /nocontent.php as directory index
 RewriteRule ^$ /nocontent.php [L]