【问题标题】:HTAccess Redirect To Remove FileHTAccess 重定向以删除文件
【发布时间】:2012-10-09 00:59:26
【问题描述】:

我的身边居于

www.domain.com/Folder/Front.php

所以 inside 的文件夹我有一个 .htaccess 文件,其中只有一行内容:

DirectoryIndex Front.php

所以输入www.domain.com/Folderwww.domain.com/Folder/Front.php 是一样的。但是我想重定向 www.domain.com/Folder/Front.php TO www.domain.com/Folder。我知道我必须有类似的东西:

RewriteEngine On
RewriteBase /

但我不知道 Cond 或 Rule 会是什么。有任何想法吗?谢谢

【问题讨论】:

  • 如果 uri 包含文件名,则在 php 文件的标题中放置 301 重定向。
  • 我想我会为你写出来的 ;) 给我一分钟。

标签: php .htaccess url redirect url-rewriting


【解决方案1】:

把它放在根级别的 .htaccess 中,它会将任何对 AnyFolder/Front.php 的请求重定向到 AnyFolder/

RewriteRule ^(.+)\/Front.php$ $1/ [R=301,L]

【讨论】:

  • 我真的不明白为什么这不起作用。您的代码看起来非常好,但是当我输入 www.domain.com/Folder/Front.php 时,它只是停留在那里而不是转到 www.domain.com/Folder
  • 你能不能清空缓存,或者打开一个隐私浏览窗口试试? .htaccess 的更新可能不会被拾取。我有时会在本地服务器上开发时在 Chrome 上得到它。
  • 另外,只是为了澄清这应该放在服务器文档根级别的 htaccess 中,而不是文件夹目录中。
  • 哦,nvm 问题出在文件的位置。但现在它重定向到www.domain.com/disks/vhosts/folder/Folder,但我希望它只转到www.domain.com/Folder
  • .htaccess 文件中是否存在RewriteBase / 行?那应该可以解决它。
【解决方案2】:

我会在 Front.php 的顶部创建一个 301 重定向,以查看 URI 是否包含 Front.php。如果是,它会将用户重定向到根文件夹。 301 重定向还将确保所有机器人也将定向到基本目录。

放在 Front.php 文件的顶部

if(strpos($_SERVER['REQUEST_URI'],'Front.php' === FALSE):

   header("HTTP/1.1 301 Moved Permanently");
   header("Location: http://www.domain.com/Folder/");

else:

   // Rest of page goes here

endif;

【讨论】:

  • 好的,出于好奇,为什么不在 htaccess 文件中执行此操作?有什么特别的原因吗?
  • 我更喜欢在文件本身上处理单个文件重定向,以保持一点秩序。好吧,实际上,我通常使用 MVC 设置(CodeIgniter),这不是什么大问题。另外,我不知道很多 htaccess 方法。
  • 我强烈反对这种方法“保持秩序”。如果有的话,如果您在单个文件中跨站点创建多个重定向,只会造成混乱。你如何管理它们?将它们包含在根级别的单个 .htaccess 中很容易成为最好和最易于管理的方法。
  • @amustill - 同样,正如我在帖子中提到的,我通常不使用这种方法。我通常有处理重定向的控制器。如果他有一个他想要重定向的文件夹,那么这种方法绝对没问题。但是,如果由于页面不再存在而需要重定向,我当然会使用 htaccess。就我而言,我使用 php 比使用 htaccess 文件更有经验,所以我给出了我知道如何解释的答案。
猜你喜欢
  • 2018-02-24
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 2019-03-05
  • 2018-10-13
  • 2013-11-01
相关资源
最近更新 更多