【问题标题】:how to remove index.php through htaccess [Advanced]如何通过 htaccess 删除 index.php [进阶]
【发布时间】:2017-05-09 21:57:07
【问题描述】:

我正在使用 codeigniter。总有一种方法可以从 url 中删除 index.php。 htaccess 的代码如下,它工作正常。

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

但问题是:我们仍然可以使用 index.php 访问网站,例如以下 URL。

两者都可以访问:

 http://www.yoursite.com/index.php/cat/subcat 
 http://www.yoursite.com/cat/subcat 

可以通过 htaccess 强制删除 index.php 吗?我实际上不希望谷歌拥有同一页面的两个重复副本。欢迎任何建议

【问题讨论】:

  • 如果您强制从 index.php/whatever URI 到 /whatever URI 的 301 重定向,该站点是否仍然有效?或者这会导致 Apache 中的无限重定向循环吗? 不确定
  • 301 重定向导致无限循环。

标签: php .htaccess mod-rewrite


【解决方案1】:

.htaccess 文件的顶部尝试以下操作:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php/?(.*) /$1 [R=302,L]

这会检查/index.php 是否存在于初始请求(不仅仅是重写的请求)中,如果存在则重定向到后面的 URL 路径。通过专门检查THE_REQUEST,您可以避免重定向循环。

尾随斜杠是可选的,因此它也会捕获对/index.php 的请求。

当您确定它工作正常时,将302(临时)更改为301(永久)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2016-03-15
    • 2014-07-27
    相关资源
    最近更新 更多