পারমালিঙ্কস পরিবর্তন করা আমাকে এনজিএনএক্স এ 404 ত্রুটি দেয়


18

সম্পাদনা

দেখা যাচ্ছে যে আমি .gtaccess সম্পাদনা করার চেষ্টা করে ভুল গাছটি ছাঁটাই করছি, যেহেতু এনজিনেক্স এটি ব্যবহার করে না। আমার .conf ফাইলটি সম্পাদনা করার জন্য আমার স্পষ্টত যা করা দরকার। আমি এটি পড়ার আগে, আমার_এপ.কনফটি দেখে মনে হয়েছিল:

upstream backend {
    server unix:/u/apps/my_app/tmp/php.sock;
}

server {

    listen 80 default;
    root /u/apps/my_app/www;
    index index.php;

    access_log /u/apps/my_app/logs/access.log;
    error_log /u/apps/my_app/logs/error.log;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # This location block matches anything ending in .php and sends it to
    # our PHP-FPM socket, defined in the upstream block above.
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /u/apps/my_app/www$fastcgi_script_name;
        include fastcgi_params;
    }

    # This location block is used to view PHP-FPM stats
    location ~ ^/(php_status|php_ping)$ {
        fastcgi_pass backend;
        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        include fastcgi_params;
        allow 127.0.0.1;
        deny all;
    }

    # This location block is used to view nginx stats
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

এখন এটিকে দেখতে দেখতে দেখতে এখনও কার্যকর হয় না:

upstream backend {
    server unix:/u/apps/my_app/tmp/php.sock;
}

server {

    listen 80 default;
    root /u/apps/my_app/www;
    index index.php;

    access_log /u/apps/my_app/logs/access.log;
    error_log /u/apps/my_app/logs/error.log;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location /wordpress/ {
        try_files $uri $uri/ /index.php?$args;
    }

    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2    |doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
    }

    # Uncomment one of the lines below for the appropriate caching plugin (if used).
    #include global/wordpress-wp-super-cache.conf;
    #include global/wordpress-w3-total-cache.conf;

    # This location block matches anything ending in .php and sends it to
    # our PHP-FPM socket, defined in the upstream block above.
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /u/apps/my_app/www$fastcgi_script_name;
        include fastcgi_params;
    }

    # This location block is used to view PHP-FPM stats
    location ~ ^/(php_status|php_ping)$ {
        fastcgi_pass backend;
        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        include fastcgi_params;
        allow 127.0.0.1;
        deny all;
    }

    # This location block is used to view nginx stats
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

আমি কি ভুল করছি কেউ জানেন?

শেষ সম্পাদনা

আমি আমার পার্মলিংকগুলি ডিফল্ট থেকে /% পোস্টনাম% / এ পরিবর্তন করেছি এবং এখন ওয়ার্ডপ্রেসের অ্যাডমিন প্যানেলের লিঙ্কগুলি আমাকে 404 ত্রুটি দেয় - ওয়ার্ডপ্রেস 404 পৃষ্ঠা নয়, এনজিএন 404 পৃষ্ঠা 40 আমাকে কেন বলা হচ্ছে যে এটি আমার .htaccess ফাইলটি সম্পাদনা করা উচিত বা আমাকে ওয়ার্ডপ্রেস বলা উচিত। Htaccess নতুন করে লিখতে পারে না - .htaccess ফাইলটি অযৌক্তিক এবং আমি যখন পার্মলিংকগুলি পরিবর্তন করি তখন ওয়ার্ডপ্রেস কোনও ত্রুটি দেয় না।

আমি আমার ওয়ার্ডপ্রেস ফোল্ডারে একটি ফাঁকা .htaccess ফাইল তৈরি করার চেষ্টা করেছি, এটিকে 666 অনুমতি দিয়েছি, ব্যবহারকারী এবং গোষ্ঠীটিকে www-ডেটাতে পরিবর্তন করে এবং তারপরে পরিবর্তনগুলি পরিবর্তন করেছি - এটি কার্যকর হয়নি। পার্মেলিংকস পরিবর্তন করার আগে আমি এটিকে এটিতে পরিবর্তন করেছিলাম:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

যখন এটি কাজ করে না, আমি আবার পারমালিক্স পরিবর্তন RewriteBaseকরার /wordpress/আগে পরিবর্তিত হয়েছি - এখনও কিছুই নেই।

আমি আমার সাইটের .conf ফাইলের মধ্যেও গিয়েছি এবং try_files $uri $uri/ /index.php;নিম্নলিখিতটিতে পরিবর্তিত হয়েছি , প্রতিবার এনজিনেক্স এবং পিএইচপি 5-এফপিএম পুনরায় চালু করতে;

try_files $uri $uri/ /index.php?$query_string;

try_files $uri $uri/ /index.php?q=$request_uri;

try_files $uri $uri/ /index.php?$args;

আমি এনগিনেক্স সহ একটি হোম সার্ভার চালাচ্ছি। এখানে কি চলছে সম্পর্কে কোনও ধারণা?

উত্তর:


13

সেগুলি .htaccessহ'ল অ্যাপাচি পুনর্লিখনের নিয়ম, তবে আপনি জানিয়েছেন যে আপনি কোনও এনগিনেক্স সার্ভারে রয়েছেন। এনগিনেক্স একটি .htaccessপছন্দসই ডিরেক্টরি স্তর স্তর ফাইল ব্যবহার করে না , এটি .htaccessনিজেও ফাইলটি ব্যবহার করে না .. আপনাকে নিজেরাই সার্ভার কনফিগারেশন সম্পাদনা করতে হবে। কোডেক্সে বিশদ নমুনা রয়েছে :

# WordPress single blog rules.
# Designed to be included in any server {} block.

# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
    try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Directives to send expires headers and turn off 404 error logging.
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
}

# Uncomment one of the lines below for the appropriate caching plugin (if used).
#include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;

# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    # This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)

    include fastcgi.conf;
    fastcgi_index index.php;
#   fastcgi_intercept_errors on;
    fastcgi_pass php;
}

ধন্যবাদ, আমার সুনাম থাকলে আমি এটিকে ভোট দিয়ে দিতাম। এটি আমার ডিফল্ট থেকে ইতিমধ্যে উল্লেখযোগ্যভাবে পরিবর্তন করা হয়েছে দেখে আমার .conf ফাইলটিতে এটি প্রয়োগ করতে কিছুটা সমস্যা হচ্ছে, তবে কমপক্ষে আমি আর .htaccess দিয়ে আরও ঘৃণা করছি না।
নিনজাচিকেন 1

@ s_ha_dum, আমি গতকাল অবধি থিমেস কনফিগারেশন ব্যবহার করেছি যখন আমি ওয়ার্ডপ্রেস ৪.৮ আপডেট করেছিলাম এবং এখন আমি পারমলিক্স কাস্টম স্ট্রাকচারে ৪০৪ এস পাচ্ছি .... গতকাল থেকে এটিকে ডিবাগ করার চেষ্টা করেছি তবে কিছুই না, কোন ধারণা ??
জাদেয়ে

আমাকে সর্বশেষ লাইনটি পরিবর্তন করতে হবে "পড়ুন" ফাস্টসিগি_পাস ইউনিক্স: /var/run/php/php7.2-fpm.sock; " উবুন্টুতে 18.04 এ কাজ করতে কিন্তু এটি কাজ করে এবং আমার বিচক্ষণতা রক্ষা করে
রব

18

আমি কাস্টম পারমালিঙ্ক সেটিং সহ ওয়ার্ডপ্রেস মাল্টিসাইট ব্যবহার করছি: /% বিভাগ% /% পোস্টনাম% /

/etc/nginx/site-available/domain.conf

সার্ভারে {

location / {
    try_files $uri $uri/ /index.php?q=$uri$args;
}

যদি আপনার রুট ওয়ার্ডপ্রেস ওয়েবরুট না হয় তবে http://domain.com/wordpress/ :

location /wordpress/ {
    try_files $uri $uri/ /wordpress/index.php?q=$uri$args;
}

আপনি যদি ব্লগস.ডির সাথে পুরানো ওয়ার্ডপ্রেস ব্যবহার করছেন তবে যুক্ত করুন: অবস্থান ^ ~ /blogs.dir {অভ্যন্তরীণ; ওরফে /var/www/wordpress/wp-content/blogs.dir; অ্যাক্সেস_লগ বন্ধ; লগ_ন_ফাউন্ড বন্ধ; মেয়াদ শেষ হয়; }

Nginx কনফিগারেশন পরীক্ষা করুন: sudo nginx -t

পুনরায় লোড এনজিন্স: সুডো পরিষেবা nginx পুনরায় লোড

পারমালিঙ্ক সেটিংস পরিবর্তন করার চেষ্টা করুন।


4
যিনি ম্যানুয়ালি একটি নতুন ডোমেন নামের অধীনে একটি ওয়ার্ডপ্রেস ইনস্টলেশন একটি সাব-ডিরেক্টরিতে সরাতে চান তার পক্ষে এটি সেরা উত্তর! তোমাকে অনেক ধন্যবাদ! এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
স্পেশাল 1 ই

1
পাথ: / ইত্যাদি / এনগিনেক্স / সাইট-উপলভ্য / পড়তে হবে: / ইত্যাদি / এনগিনেক্স / সাইট-উপলভ্য /
অনুদান

6

উভয় কোডের এই টুকরা যোগ করতে হবে /sites-available/your-settings-file এবং যুক্ত করতে হয়েছিল /sites-enabled/your-settings-file:

server {
[...]

if (!-e $request_filename) {
    rewrite ^.*$ /index.php last;
}

[...]
}

এটা এখন আমার জন্য কাজ করছে।


1
এই আমি সহজ উত্তরটি খুঁজছিলাম, ধন্যবাদ
থাইবিশপ

1
এই কাজ! আপনি কি দয়া করে ব্যাখ্যা করতে পারেন এটি কি করে? (esp the "শেষ" অংশ ...)
সিদ্দ

1

আমাকে ওয়ার্ডপ্রেস-ইনস্টলড ডিরেক্টরিতে রুট পাথ সেট করতে হয়েছিল: root / var / www / html / wp;

আমি এটি পছন্দ করি না কারণ এই মেশিনে আমার আরও অ্যাপ্লিকেশন ইনস্টল রয়েছে তবে আরও ভার্চুয়াল হোস্ট তৈরি করা যথেষ্ট should

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.