htaccess перенаправляет удаление index.php

Я хочу, чтобы пользователь мог использовать $_SERVER['PATH_INFO'] в качестве заполнителя, для которого файл должен служить и избавляться от index.php в адресной строке

Например, я хочу служить me.com/index.php/settings1 как me.com/settings1 и т. Д. Для любого PATH_INFO, к которому пользователь идет.

Как я могу написать это как правило htaccess? Я даже не знаю, с чего начать

Если это помогает, я принимаю хостинг-хостинг.

Основываясь на предложении @EddyFreddy, я пробовал оба способа, упомянутые в этом вопросе, не повезло. Вот как выглядит файл до сих пор:

 suPHP_ConfigPath /home/user/php.ini <Files php.ini> order allow,deny deny from all </Files> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC] RewriteRule .? http://mysite.com%{REQUEST_URI} [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] # tried with and without the `?` 

Это может быть легко обработано mod_rewrite. Используйте этот код в .htaccess в DOCUMENT_ROOT:

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / # external redirect from /index.php/foo to /foo/ RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s/+index\.php(/[^\s\?]+)? [NC] RewriteRule ^ %1/ [L,R] # external redirect to add trailing slash RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s/+((?!.+/[\s\?])[^\s\?]+) [NC] RewriteRule ^ %1/ [L,R] # internal forward from /foo to /index.php/foo RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^ index.php%{REQUEST_URI} [L,NC] 

Убедившись, что все работает нормально, измените R на R=301 .

После долговременной оценки я узнал, что версия из анубхавы не работает для меня во всех случаях. Поэтому я попробовал эту модифицированную версию. Он будет обрабатывать существующие файлы в существующих источниках правильно и не производит двойных слэшей.

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / ###### Add trailing slash (optional) ###### RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$ RewriteRule ^(.*)$ $1/ [R=301,L] ###### external redirect from /index.php/foo to /foo ###### RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s/+index\.php(/.+)?[\s\?] [NC] RewriteRule ^ %1 [L,R=301] ###### internal forward from /foo to /index.php/foo ###### RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^ index.php%{REQUEST_URI} [L]