#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 тоже?