0

需要注意的是,我在 StackOverflow 上发现了类似的问题,但它们没有按我的需要工作。

我有一个网址,例如:

http://www.example.com/index.php/test

我想删除 index.php 目录,所以如果输入以上内容,它将转到:

http://www.example.com/test

这似乎有效

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

但是,如果网址是:

http://www.example.com/index.php?option=example

它变成

http://www.example.com/?option=example

所以index.php只有在我的第一个例子中是一个目录时才应该被删除。

此外,如果您输入例如:

http://www.test.example.com/index.php/index.php/dfd

它应该去

http://www.test.example.com/dfd
4

1 回答 1

1

以下规则将:

  • 不申请/index.php?o=a

  • 重定向/index.php/index.php/dfd/dfd

  • 重定向/index.php/index.php/dfd?a=b/dfd?a=b

  • 重定向/index.php/index.php?a=b/index.php?a=b

.

RewriteCond %{QUERY_STRING} .+  
RewriteRule ^index\.php(/index\.php)+/?$ /index.php [R=302,L,QSA,NC]

RewriteCond %{QUERY_STRING} ^$ [OR]
RewriteCond %{REQUEST_URI} !index\.php/?$
RewriteRule ((^|/)index\.php)+/?(.*)$ /$3 [R=302,L,QSA,NC]
于 2013-06-27T14:43:16.547 回答