使用htaccess摆脱/index.php链接?

问题描述

我可以这样打开我的网站:

www.mysite.com

或类似这样:

www.mysite.com/index.PHP

我想创建一个www.mysite.com/index.php重定向www.mysite.com的htaccess规则。但是我所有的尝试都有其他副作用。我尝试过:

Redirect index.PHP    home.PHP
RewriteRule    ^index.PHP?$    home.PHP    [NC,L]
RewriteRule    ^index.PHP/?$    redirect_to_home.PHP    [NC,L]

但是所有这些都弄乱了原始的index.PHP调用。因此它确实重定向了,但是普通的mysite.com链接不再起作用了。

有什么想法吗?

解决方法

请您尝试以下。

RewriteEngine On
RewriteCond  %{REQUEST_FILENAME} -f
RewriteCond %{THE_REQUEST} index\.php
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$
RewriteRule ^ %1 [R=301,L]

说明:

  • 使RewriteEngine On使规则生效。
  • RewriteCondREQUEST_FILENAME的提及条件,用于检查浏览器中是否存在提到的文件。
  • 然后检查其中是否包含index.php的THE_REQUEST是否具有完整的请求详细信息(包括URL和GET / POST方法)。
  • 现在检查REQUEST_URI是否在请求的网址中包含index\.php,将之前的所有内容都保存到临时缓冲存储器中,以便以后取回其值(基本上是域名)。
  • 最后在RewriteRule中,将index.php的完整URL重定向到仅根据要求的域名(R = 301表示浏览器端的永久重定向)。
,

使用此重定向规则从任何路径中删除/index.php

RewriteEngine On

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]