【问题标题】:Use .htaccess file to check folder for file and redirect if not found使用 .htaccess 文件检查文件夹中的文件并在未找到时重定向
【发布时间】:2015-03-25 21:59:31
【问题描述】:

我想使用 .htaccess 文件,以便如果有人访问我们新网站上的旧 URL,例如 website.com/oldpage.asp .htaccess 首先检查 website.com/oldsite/oldpage.asp 是否在我们的服务器。如果没有文件,则将它们重定向到 old.website.com/oldpage.asp,其中存在我们旧网站的副本。

由于某种原因,只有 /oldsite/ 文件夹中的 .htaccess 文件正在执行。

这是我的站点根目录的 .htaccess 文件,它检查文件是否存在于新站点上,如果不存在则重定向到 /oldsite/

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /oldsite/$1 [NC,QSA,L]

然后在 /oldsite/ 它应该检查文件是否再次存在,如果不再次重定向。

RewriteEngine On
RewriteOptions inherit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://old.website.com/$1 [R=301,NC,QSA,L]

【问题讨论】:

    标签: .htaccess mod-rewrite redirect


    【解决方案1】:

    您不需要 2 个 .htaccess。

    在站点根目录 .htaccess 中有此规则:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}/oldsite/$1 -f
    RewriteRule ^(.*)$ oldsite/$1 [NC,QSA,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ http://old.website.com/$1 [R=301,L]
    

    然后删除/oldsite/.htaccess 并在清除浏览器缓存后进行测试。

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 2016-02-14
      • 2017-12-05
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多