Привет, у меня возникла проблема при установке правила htaccess в nginx. Мой htaccess:
Правила htaccess:
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Я преобразовал это так:
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite /.* /index.php/$request_uri last;
}
Я читал, что если это зло для nginx, но я не понимаю этих правил. Мое приложение, которое я пытаюсь настроить:
http://products.cogzidel.com/airbnb-clone/
Теперь правило полезно, когда мы пытаемся получить доступ к админке. Мы получаем к нему доступ, написав / administrator в url, и правила принимают это как ввод для index.php, и мы входим в него. Но после применения этого правила я вижу в журнале, что появляется ошибка 404. Позвольте мне упомянуть, что nginx vhost правильно перезагружается после этого правила, и я добавил это правило в область сервера и область локализации, но не работает
Вы хотите заглянуть в блоки локации http://nginx.org/en/docs/http/ngx_http_core_module.html#location и директивы try_files http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
Например, если вы посмотрите блог wordpress (довольно подробный пример) http://wiki.nginx.org/WordPress вы увидите это:
location /wordpress {
try_files $uri $uri/ /wordpress/index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(/wordpress)(/.*)$;
}
который гласит: «Попробуйте файл прямо в / wordpress, в противном случае передайте его в index.php для обработки».
Большое вам спасибо за представление о пробных файлах. Я работал над этим и ввел этот блок в location: try_files $ uri $ uri / /index.php;
Это сработало, и я не могу получить доступ http://my.url.com/administrator
Кроме того, указанная ниже ссылка на стек лучше всего подходит для понимания пробных файлов, которые мне тоже помогли.
https://stackoverflow.com/questions/17798457/how-can-i-make-this-try-files-directive-work