.htaccess для удаления расширения файла не работает

#php #.htaccess #mod-rewrite

#php #.htaccess #мод-перезапись

Вопрос:

У меня есть общедоступная html-папка, в которой хранятся некоторые файлы и папки. Затем я создал в нем папку. Эта папка содержит несколько файлов и папку «Admin», которая содержит файлы, связанные с моей панелью администратора, для просмотра данных участников моего сайта.

Теперь я использовал следующий код в файле .htaccess в общедоступной папке html, который удаляет расширение php всех страниц.Но когда я пытаюсь войти в свою панель администратора, войти не удается.

например , www.abc.com >> Здесь находится файл .htaccess со следующим кодом.

Это работает для файлов в www.abc.com и для файлов в www.abc.com/xyz/index.php и другие файлы. Но когда попробовал www.abc.com/xyz/admin/index.php Для входа в систему эта страница просто обновляется, но не позволяет выполнить успешный вход в систему.

Код, используемый в .htaccess, выглядит следующим образом :

 RewriteEngine On  

RewriteCond %{THE_REQUEST} s/ (?:index)?(.*?).php[s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

RewriteCond %{THE_REQUEST} /index [NC]
RewriteRule ^(.*?)index([/.]|$) /$1 [L,R=302,NC,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(. ?)/?$ /$1.php [L]
  

Ответ №1:

Попробуйте эти правила, которые позволяют избежать перенаправления POST запросов:

 RewriteEngine On  

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} s/ (?:index)?(.*?).(?:php|html)[s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index [NC]
RewriteRule ^(.*?)index([/.]|$) /$1 [L,R=302,NC,NE]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(. ?)/?$ /$1.php [L]

RewriteCond %{DOCUMENT_ROOT}/$1.html -f [NC]
RewriteRule ^(. ?)/?$ /$1.html [L]
  

Комментарии:

1. ДА… Это сработало… Спасибо … Но как можно использовать код для удаления расширения .html тоже?