#regex #.htaccess
Вопрос:
Мне нужно удалить index.php с внутренних страниц, чтобы путь к URL /index.php/path
-адресу был справедливым /path
. Но при этом если путь есть /index.php/
, то не удалять index.php и оставь все как есть. Я пробую следующие строки в своем .htaccess
:
RewriteCond %{REQUEST_URI} !^.*/index.php/$ [NC]
RewriteRule /index.php/(. )$ /$1
Но они удаляют index.php всегда, в том числе, когда путь /index.php/
Ответ №1:
Вы можете использовать эти 2 правила в файле root .htaccess вашего сайта:
RewriteEngine On
# external redirect to remove /index.php
RewriteCond %{THE_REQUEST} s/ index.php/(S ) [NC]
RewriteRule ^ /%1 [R=301,L,NE]
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# rewrite to /index.php/<uri>
RewriteRule . index.php/$0 [L]