Skip to content

nginx seo urls

Solved Configure
15 2 2.8k 1
  • what do the cfg have to look like for seo url?

    Example: instead of

    index.php?page=home

    so

    /page/home

    server {
        listen       80;
        server_name  riekmedia.dev;
    
        root   /var/www/website;
        index  index.php index.html index.htm;
    
       location / {
        if ($request_uri ~ ^/(.*)\.html$) {
            return 302 /$1;
            }
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www;
        }
            location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    
  • @riekmedia Ah, ok. That makes sense. I can probably replicate this fairly easily. Leave it with me. Hopefully should be back to you at some point later today.

    @phenomlab that seems to work. Or unclean?

    ####Please add below lines for SEO Friendly URLs
    	location / {
    		index index.php;
    		rewrite ^/page(?:/([a-z]+))?$ /index.php?page=$1;
    	}
    
    
  • what do the cfg have to look like for seo url?

    Example: instead of

    index.php?page=home

    so

    /page/home

    server {
        listen       80;
        server_name  riekmedia.dev;
    
        root   /var/www/website;
        index  index.php index.html index.htm;
    
       location / {
        if ($request_uri ~ ^/(.*)\.html$) {
            return 302 /$1;
            }
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www;
        }
            location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    

    @riekmedia Can you provide more information as to the technology you are using to present this site - for example, WordPress, Joomla, Ghost, etc ?

    Thanks

  • @riekmedia Can you provide more information as to the technology you are using to present this site - for example, WordPress, Joomla, Ghost, etc ?

    Thanks

    @phenomlab said in nginx seo urls:

    @riekmedia Can you provide more information as to the technology you are using to present this site - for example, WordPress, Joomla, Ghost, etc ?

    Thanks

    Self-written cms the url only needs to be from z.b index.php?page=home to /page/home

    in Apache woked this for .htaccess

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/?site/([a-zA-Z0-9]+)$ /index.php?site=$1
    
    
  • @phenomlab said in nginx seo urls:

    @riekmedia Can you provide more information as to the technology you are using to present this site - for example, WordPress, Joomla, Ghost, etc ?

    Thanks

    Self-written cms the url only needs to be from z.b index.php?page=home to /page/home

    in Apache woked this for .htaccess

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/?site/([a-zA-Z0-9]+)$ /index.php?site=$1
    
    

    @riekmedia Something like this should work (obviously it needs modification to match your environment)

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location /my-app {
        try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
    }
    
  • @riekmedia Something like this should work (obviously it needs modification to match your environment)

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location /my-app {
        try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
    }
    

    @phenomlab said in nginx seo urls:

    @riekmedia Something like this should work (obviously it needs modification to match your environment)

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location /my-app {
        try_files $uri $uri/ /my-app/file.php?arg=$uri&$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
    }
    

    Thank you, I’ll try this right now

  • `hm is not working 😕

    https://opensourceeducation.net/how-to-fix-seo-friendly-urls-in-nginx-for-wordpress-sites

    server {
        listen       80;
        server_name  localhost;
    
        root   /var/www/website;
        index  index.php index.html index.htm;
    
    
    ####Please add below lines for SEO Friendly URLs######################################
    	location / {
    		index index.php;
    		try_files $uri $uri/ /index.php?page=$uri&$args;
    	}
    ######################################################################################
    
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www;
        }
            location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    
    
  • `hm is not working 😕

    https://opensourceeducation.net/how-to-fix-seo-friendly-urls-in-nginx-for-wordpress-sites

    server {
        listen       80;
        server_name  localhost;
    
        root   /var/www/website;
        index  index.php index.html index.htm;
    
    
    ####Please add below lines for SEO Friendly URLs######################################
    	location / {
    		index index.php;
    		try_files $uri $uri/ /index.php?page=$uri&$args;
    	}
    ######################################################################################
    
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www;
        }
            location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    
    

    @riekmedia are you using this as a guide instead of the snippet I provided ?

  • I had tried both and neither worked

  • I had tried both and neither worked

    @riekmedia Is there any way I can get access to the server to investigate, or perhaps get a copy of the source code to fix locally ? (I’ll also need the database)

  • @riekmedia Is there any way I can get access to the server to investigate, or perhaps get a copy of the source code to fix locally ? (I’ll also need the database)

    @phenomlab Which database do they mean? I’m not talking about Nodebb but about the web server nginx. I had included the config.

    default.conf for Domain riekmedia.dev

    server {
        listen       80;
        server_name  riekmedia.dev;
    
        root   /var/www/website;
        index  index.php index.html index.htm;
    
    
    	location / {
    		index index.php;
    		try_files $uri $uri/ /index.php?page=$uri&$args;
    	}
    
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www;
        }
            location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    ´´´´
  • @phenomlab Which database do they mean? I’m not talking about Nodebb but about the web server nginx. I had included the config.

    default.conf for Domain riekmedia.dev

    server {
        listen       80;
        server_name  riekmedia.dev;
    
        root   /var/www/website;
        index  index.php index.html index.htm;
    
    
    	location / {
    		index index.php;
    		try_files $uri $uri/ /index.php?page=$uri&$args;
    	}
    
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /var/www;
        }
            location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass   unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
    }
    ´´´´

    @riekmedia I mean a copy of the database that the CMS connects to, plus the source code. It’s hard to provide a fix without it.

  • @riekmedia I mean a copy of the database that the CMS connects to, plus the source code. It’s hard to provide a fix without it.

    @phenomlab there is no cms yet, I program the whole thing first. It is now just a small php website with subpages that are accessed via index.php?page=aboutus z.b. I just have to change the webserver now that it converts dynamic urls to seo urls

    example

    riekmedia.dev/index.php?page=aboutus

    new url

    riekmedia.dev/page/aboutus

    with apache you could solve this via htaccess with Rewrite Rule

    example

    # BEGIN RIEK-MEDIA
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^/?page/([a-zA-Z0-9]+)$ /index.php?page=$1
    </IfModule>
    # END RIEK-MEDIA
    

    Hier are example from page nginx not working

    https://riekmedia.dev/index.php?page=impressum

    https://riekmedia.dev/page/impressum

    Apache Server rewrite Rule is working

    https://myteamspeak.online/index.php?page=impressum

    https://myteamspeak.online/page/impressum

  • @phenomlab there is no cms yet, I program the whole thing first. It is now just a small php website with subpages that are accessed via index.php?page=aboutus z.b. I just have to change the webserver now that it converts dynamic urls to seo urls

    example

    riekmedia.dev/index.php?page=aboutus

    new url

    riekmedia.dev/page/aboutus

    with apache you could solve this via htaccess with Rewrite Rule

    example

    # BEGIN RIEK-MEDIA
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^/?page/([a-zA-Z0-9]+)$ /index.php?page=$1
    </IfModule>
    # END RIEK-MEDIA
    

    Hier are example from page nginx not working

    https://riekmedia.dev/index.php?page=impressum

    https://riekmedia.dev/page/impressum

    Apache Server rewrite Rule is working

    https://myteamspeak.online/index.php?page=impressum

    https://myteamspeak.online/page/impressum

    @riekmedia Ah, ok. That makes sense. I can probably replicate this fairly easily. Leave it with me. Hopefully should be back to you at some point later today.

  • @riekmedia Ah, ok. That makes sense. I can probably replicate this fairly easily. Leave it with me. Hopefully should be back to you at some point later today.

    @phenomlab that seems to work. Or unclean?

    ####Please add below lines for SEO Friendly URLs
    	location / {
    		index index.php;
    		rewrite ^/page(?:/([a-z]+))?$ /index.php?page=$1;
    	}
    
    
  • @phenomlab that seems to work. Or unclean?

    ####Please add below lines for SEO Friendly URLs
    	location / {
    		index index.php;
    		rewrite ^/page(?:/([a-z]+))?$ /index.php?page=$1;
    	}
    
    

    @riekmedia that looks fine to me

  • phenomlabundefined phenomlab has marked this topic as solved on

Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • Spam spam spam

    Solved Configure nodebb
    6
    2 Votes
    6 Posts
    854 Views
    @Panda said in Spam spam spam: ok, yes Ive seen the queue, it shows IP, but doesnt have a field for comments from registrant. It’s not designed for that. It merely serves as a gateway between posts appearing on your form or not. @Panda said in Spam spam spam: It would be better if nodebb had this plugin included in ACP list, as not only then do you know its approved and should work, but many people cant or dont want to use CLI on the server That’s a question for the NodeBB devs but in all honesty you can’t not use the CLI when installing nodebb so to be this isn’t a big deal.
  • Nodebb and emails

    Solved Configure nodebb
    27
    5 Votes
    27 Posts
    4k Views
    @Panda it will use SMTP. In all cases, I never use any plugin to send email. I’ll always send it raw.
  • Opening links in nodebb widget

    Solved Configure nodebb
    6
    4 Votes
    6 Posts
    2k Views
    A more efficient way of including this would be to not over complicate it and leverage a standard iframe (providing the CSP headers of the remote site permit this) like below <iframe src="https://www.classmarker.com/online-test/start/?quiz=gag66aea7922f0a5" width="700" height="800"></iframe> This works first time every time on your site as intended.
  • Test of youtube embeds

    Solved Configure nodebb
    14
    11 Votes
    14 Posts
    2k Views
    @phenomlab Perfect!!! Many thanks.
  • MogoDB v6 to v7 upgrade

    Solved Configure nodebb
    5
    1 Votes
    5 Posts
    1k Views
    @Panda if you used the Ubuntu PPA, I think this only goes as far as 6.x if I recall correctly.
  • How to deploy WordPress.org Developer theme

    Solved Configure wordpress theme github
    4
    1 Votes
    4 Posts
    1k Views
    @Hari the real issue here is that I don’t think it can be used as a theme for WordPress because of the dependencies it clearly has, including its own Web server. My view here is that this is designed to be a complete development environment outside of the WordPress core.
  • Getting Eror When Started NodeBB

    Solved Configure bug
    7
    1
    2 Votes
    7 Posts
    1k Views
    @phenomlab yes i did. i deleted one of plugin then it started to work normally.
  • Email Server Settings

    Solved Configure mx entry
    25
    10 Votes
    25 Posts
    4k Views
    @Onix said in Email Server Settings: If anyone has long-term experience with self-hosted SMTP + DNS set-ups that remain stable, would be great to hear which configurations worked best. I can help with this