.htaccess传送资源(如果存在php或html文件)

时间:2018-08-14 10:17:14

标签: .htaccess

我的任务是将旧网站迁移到新的托管人,同时在此放置新网站。仍然可以使用archive.domain.tld

来访问旧的旧站点。

旧站点上的链接看起来像这样:/foo/bar/baz.php/foo/bar/baz.html,但是也有很多链接看起来像/foo/bar/baz。它似乎表明旧的提供程序在其apache配置中具有某种规则,首先查看是否存在资源,如果不存在,则在添加.php时查看该资源是否存在,如果不存在,则该资源是否存在。如果添加.html,则存在。

我想要存档的是相同的行为。 要求https://archive.domain.tld/foo/bar/baz

  1. 检查/ foo / bar / baz是否为文件,如果是,则将其交付
  2. 检查/foo/bar/baz.php是否为文件,如果是,则将其交付
  3. 检查/foo/bar/baz.html是否为文件,如果是,则提供文件

我知道,我可以像Symfony一样将所有流量重写为单个.php文件,但是如何使用.htaccess文件实现此“路由”

1 个答案:

答案 0 :(得分:1)

您可以在Apache配置或根.htaccess中使用以下规则:

RewriteEngine On

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

# .html extension
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ $1.html [L]