#php #apache #.htaccess #codeigniter #mod-rewrite
#php #apache #.htaccess #codeigniter #мод-перезапись
Вопрос:
У меня есть корневая папка моего веб-сайта с существующим веб-сайтом. Я разработал систему администрирования на основе codeigniter, которую я хочу опубликовать в папке / editor, однако все выполненные мной изменения mod_rewriting кажутся напрасными, поскольку, если что-либо перезаписывается, оно не может получить доступ к входной строке или index.php появится файл. Вот структура:
/
/editor
index.php
.htaccess
index.php
.htaccess
Вот мой текущий файл .htaccess в корне сайта:
DirectoryIndex index.php
RewriteEngine On
RewriteRule %{REQUEST_URI}^/?editor/(.*)$ (.*)/editor/$1 [R,L]
RewriteCond $1 ^$
RewriteRule ^(.*)$ ?p=homepage [L]
RewriteCond $1 !^(index.php|editor|css|pdf|eshot|js|fonts|images)
RewriteRule ^(.*)$ index.php/?p=$1 [L]
Редактировать
Это текущее правило отображает корневой index.php файл при переходе в подпапку /editor, в то время как он должен показывать index.php файл из папки /editor.
Повторное редактирование
Это может быть файл .htaccess во вложенной папке /editor, вот код из этого:
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index.php|lib|robots.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
Ответ №1:
Хорошо, давайте рассмотрим это шаг за шагом.
Сначала давайте отбросим это правило, которое неграмотно, потому что оно использует регулярное выражение с правой стороны:
RewriteRule %{REQUEST_URI}^/?editor/(.*)$ (.*)/editor/$1 [R,L]
Второе правило может быть сокращено до этого:
RewriteRule ^/?$ ?p=homepage [L]
Третье правило можно переписать следующим образом:
RewriteRule ^(?!(?:index.php|editor|css|pdf|eshot|js|fonts|images))([^/.] )/?$ index.php?p=$1 [L]
Подводя итог, мне кажется, что вы могли бы сократить свои правила следующим образом:
DirectoryIndex index.php
RewriteEngine On
RewriteRule ^/?$ ?p=homepage [L]
RewriteRule ^(?!(?:index.php|editor|css|pdf|eshot|js|fonts|images))([^/.] )/?$ index.php?p=$1 [L]
Комментарии:
1. Привет, я думаю, что, возможно, я объяснил это немного неясно, пожалуйста, смотрите Мою правку для уточнения 🙂
2. К сожалению, это не работает. Может быть, это файл .htaccess в другой папке? Я опубликую это в своем вопросе.
3. Мне также не хватало ? во втором файле htaccess, который менял ваше последнее редактирование, сработало 🙂