【问题标题】:.htaccess redirect when file does not exist.htaccess 文件不存在时重定向
【发布时间】:2011-08-05 01:50:08
【问题描述】:

所以我使用 .htaccess 将旧网站页面重定向到新网站页面。我的文件中的典型规则如下所示:

重定向 301 /faqs.php http://blueprintprep.com/classroom/faq

奇怪的是,当服务器上存在旧文件时它工作正常,但是当我删除文件时,最终 URL 实际看起来像这样:

http://blueprintprep.com/classroom/faq?/faqs.php

蓝色的火焰中发生了什么??

该文件由一堆这些规则组成,对于 CodeIgniter:

重写引擎开启 RewriteBase / RewriteCond %{REQUEST_URI} ^system.* 重写规则 ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^应用程序。* RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

RewriteRule ^application_consulting/(.*) http://blueprintprep.com/oneonone/app_consulting [R=301,L]
RewriteRule ^weekend/(.*) http://blueprintprep.com/classroom [R=301,L]
RewriteRule ^workshop/(.*) http://blueprintprep.com/oneonone [R=301,L]

【问题讨论】:

  • htaccess 文件中还有什么?

标签: .htaccess redirect


【解决方案1】:

您可以改用mod_rewrite

RewriteEngine on
RewriteRule ^/faqs.php$ /classroom/faq [L,R=301]

无论文件是否存在,这都会起作用。

希望对您有所帮助。

【讨论】:

  • 谢谢,这很好用:) 我仍然很好奇为什么文件不存在时会出现奇怪的结果?
  • 看起来这是您的第一个RewriteRuleRewriteRule ^(.*)$ index.php?/$1 [L] 的结果。我不确定index.php 的去向,但这是我的第一个想法。
  • 实际上,我只是看到它是重写,而不是重定向,所以它不应该影响实际的 URL...
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多