Я пытаюсь очистить URL-адреса в NGINX с помощью фреймворка DooPHP.
Это => - http://example.com/index.php/something/more/ К этому => - http://example.com/something/more/
Я хочу удалить (очистить URL-адрес) "index.php" из URL-адреса, если кто-то попытается войти в первую форму. Как постоянный редирект.
Как сделать этот конфиг на NGINX?
Спасибо.
[Обновление: актуальная конфигурация nginx]
server {
listen 80;
server_name vip.example.com;
rewrite ^/(.*) https://vip.example.com/$1 permanent;
}
server {
listen 443;
server_name vip.example.com;
error_page 404 /vip.example.com/404.html;
error_page 403 /vip.example.com/403.html;
error_page 401 /vip.example.com/401.html;
location /vip.example.com {
root /sites/errors;
}
ssl on;
ssl_certificate /etc/nginx/config/server.csr;
ssl_certificate_key /etc/nginx/config/server.sky;
if (!-e $request_filename){
rewrite /.* /index.php;
}
location / {
auth_basic "example Team Access";
auth_basic_user_file config/htpasswd;
root /sites/vip.example.com;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /sites/vip.example.com$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}
Это была та линия, которую я искал, я сделал это сам. У меня могли быть ошибки.
Что вы думаете?
server {
....
rewrite ^/index.php/(.*) /$1 permanent;
....
}
Я пробовал его на CodeIgniter 1.7 и 2.0 и меняю
config.php $config['uri_protocol'] = "REQUEST_URI";
и я добавляю try_files $uri $uri/ /index.php?r=$request_uri;
на nginx.conf и работал
location / {
auth_basic "example Team Access";
auth_basic_user_file config/htpasswd;
root /sites/vip.example.com;
index index.php;
try_files $uri $uri/ /index.php?r=$request_uri;
}
может быть то же самое на DooPHP
Добавьте это в часть конфигурации сервера nginx.
location / {
if (!-e $request_filename) {
rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;
}
if ($uri ~* "\.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$") {
expires max;
break;
}
}
Если у вас есть только php-файлы, вы можете использовать:
location / {
rewrite ^(.*)$ /index.php
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
Удалить эту строку
if (!-e $request_filename){
rewrite /.* /index.php;
}
Добавьте это внутреннее местоположение /
rewrite ^(.*)$ /index.php;
if (!-e $request_filename){
rewrite ^(.*)$ /$1.php;
}
Надеюсь, это сработает для вас.
Добавьте этот объект местоположения в конфигурацию вашего сервера в файле nginx.conf. Если location /
уже существует, просто добавьте try_files
линия.
location / {
try_files $uri /index.php;
}
Я добавил следующее правило в свой файл конфигурации NGINX (после всех правил местоположения):
if ($request_uri ~* "^(.*/)index\.php(.*)") {
return 307 $1$2;
}
У меня все работает нормально.