Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Правило в .htaccess

Здравствуйте
У меня на сервере есть папка templates, которая находится в корневой директории А так же есть контроллер с именем templates, url выглядит так... http://site.com/templates При переходе по http://site.com/templates контроллер template не работает, так как он отображает папку templates Url работает так: после первого слэша - контроллер, после второго модель, то есть http://site.com/templates/blog, где templates это контроллер, а blog это модель В htaccess есть правило RewriteRule ^(.+)$ index.php?url=$1 [QSA,L], которое разбивает url по слэшу
Вопрос: Подскажите правило для .htaccess, чтобы он подгружал контроллер, а не папку!?
AddDefaultCharset UTF-8
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.stackoverflow.com$ [NC] RewriteRule ^(.*)$ http://stackoverflow.com/$1 [R=301,L]
RewriteBase / RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ [NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)(/)$ $1 [R=301,L]
Options -Indexes Options -Includes Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]


Ответ

Указанные правила работают только для несуществующих каталогов, файлов, и жестких ссылок.
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Эта строчка RewriteCond %{REQUEST_FILENAME} !-d не дает запустить index.php
Попробуйте сделать так:
RewriteCond %{REQUEST_URI} ^/templates/ RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

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

Отправить комментарий