Всем спасибо за терпение и помощь. Я полностью повторяю вопрос, потому что он становится довольно длинным из-за всех моих исправлений. У меня есть структура PHP MVC с 4 точками входа:
из корня:
index.php
index-ajax.php
admin/index.php
admin/index-ajax.php
Мне нужен был файл .htcaccess, который принимал бы любой запрос и перезаписывал его в соответствующий файл на основе URL-адреса. Длинный URL-адрес будет index.php?rt=cms/view/15, и я хотел, чтобы он был index/cms/view/15. Эта часть в значительной степени сделана, за исключением одного подводного камня.
Вот мой файл .htaccess сейчас:
# htaccess file for framework - GOOD
Options +FollowSymLinks
# Turn on the mod_rewrite engine - GOOD
RewriteEngine On
# Hide indexes - GOOD
Options -Indexes
# If a file is not one of these, continue processing. - GOOD
RewriteRule \.(css|js|jpg|jpeg|png|gif|ico)$ - [L]
# RewriteRules for folder index files
#RewriteRule ^(index)?(.php)?$ index.php [L] - GOOD
#RewriteRule ^admin(/?)(index)?(.php)?$ admin/index.php [L] - GOOD
# RewriteRules for admin folder arguements - going from more specific to less
RewriteRule ^admin/ajax/[A-Za-z0-9-_/]*$ admin/index-ajax.php?rt=$1 [L]
RewriteRule ^admin/[A-Za-z0-9-_/]*$ admin/index.php?rt=$1 [L]
# RewriteRule for root ajax file
RewriteRule ^ajax/[A-Za-z0-9-_/]*$ index-ajax.php?rt=$1 [L]
# RewriteRule for root file - by here, it is not ajax or admin related, so only
# possible option left if the root index file
RewriteRule ^[A-Za-z0-9-_/]*$ index.php?rt=$1 [L]
Я сделал простой сайт с двумя папками — «root» и «root/admin», и внутри каждой из них есть папка css, images и javascript с некоторым фиктивным содержимым. Внутри «root» и «root/admin» есть файл index.php и index-ajax.php, который просто выводит любой аргумент URL и использует файлы css, js и изображения из каждой из папок.
Проблема, с которой я столкнулся сейчас, заключается в том, что если я делаю URL-адрес, такой как index/blah или /admin/index/blah, то страница отображается правильно, и аргумент правильный. Однако, когда я делаю URL-адрес, такой как index/blah/view или admin/index/blah/view, аргумент правильный (?rt=blah/view), но страница отображается неправильно, потому что файл css/js/images переходит в индекс /blah/[css] вместо index/[css].
Любые идеи о том, как справиться с этим? Я разрешил файлам css/js/image проходить как есть через .htaccess, чтобы там было меньше работы.