要注意,我在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
答案 0 :(得分: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]