Ответ 1
Сделайте это:
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
Я пытаюсь перенаправить файлы index.php в root/, я искал и нашел несколько фрагментов кода, похожих на:
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.domain.com/$1 [R=301,L]
Это, однако, не будет работать для субдоменов, пример ниже:
Кто-нибудь знает, как настроить htaccess выше, чтобы он учитывал субдомен и перенаправлял их в соответствующее место?
например. если пользователь посещает http://subdomain.domain.com/index.php, он перейдет на http://subdomain.domain.com/
Бонусные баллы:
Есть ли htaccess, который может применить это правило ко всем папкам?
Итак, для любой папки с index.php они будут просто перенаправлены на нее root, например. http://subdomain.domain.com/folder1/folder2/index.php автоматически перейдет на http://subdomain.domain.com/folder1/folder2/
Сделайте это:
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
Я основывал следующий код на @ThinkingMonkey answer
RewriteRule ^(.*)index\.(php|html?)$ /$1 [R=301,NC,L]
Он перенаправляет URI, заканчивающиеся на index.php, index.htm или index.html в /. Также работает с подкаталогами.
Также обратите внимание на флаг NC
. Это делает его нечувствительным к регистру. Таким образом, он работает, даже если URI находится в верхнем регистре, например INDEX.PHP.
RewriteCond %{THE_REQUEST} ^.*/index\.(php|html?) [NC]
RewriteRule ^(.*)index.(php|html?)$ /$1 [R=301,NC,L]
Моя версия на основе ThinkingMonkey и caiosm1005 отвечает:)
Можно использовать этот
RewriteRule ^index\.php/(.*)$ http://www.example.com/$1 [R=301,L]