问题
I'm trying to redirect index.php files to the root /, I've searched around and found several snippets of code similar to:
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L]
This however won't work for subdomains, example below:
- I have a subdomain: subdomain.domain.com
- A user visits http://subdomain.domain.com/index.php
- Using the htaccess above they are redirected to http://www.domain.com/ rather than http://subdomain.domain.com/
Does anyone know how to adjust the htaccess above so it will take into account the subdomain and redirect them to the appropriate location?
e.g. if a user visits http://subdomain.domain.com/index.php they will go to http://subdomain.domain.com/
Bonus Points:
Is there a htaccess that can just apply this rule to all folders?
So for any folder with an index.php they will just be redirected to it's root e.g. http://subdomain.domain.com/folder1/folder2/index.php would automatically go to http://subdomain.domain.com/folder1/folder2/
回答1:
Do this:
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
回答2:
I based the following code on @ThinkingMonkey's answer
RewriteRule ^(.*)index\.(php|html?)$ /$1 [R=301,NC,L]
It redirects URIs ending with index.php, index.htm or index.html to /. Works with subdirectories, too.
Also, notice the NC
flag. It makes it case-insensitive. So it works even if the URI is in upper-case such as INDEX.PHP.
回答3:
Can be use this
RewriteRule ^index\.php/(.*)$ http://www.example.com/$1 [R=301,L]
来源:https://stackoverflow.com/questions/9369917/htaccess-redirect-index-php-to-root-including-subdomains