Jump to content
Froxlor Forum
  • 0

Get Simple CMS und SEO freundliche URLs


vladimir

Question

Hallo zusammen,

 

erstmal meine Konfiguration: Debian wheezy, nginx, Froxlor, php-fpm und als CMS probiere ich gerade GetSimple.

 

Get Simple hat eine Funktion, die da heisst: "Nutze freundliche URLs - Erfordert 'mod_rewrite' auf Ihrem Server"

Wie man schon erkennen kann ist Get Simple eigentlich auf Apache ausgelegt.

 

Die sonstigen URLs sehen folgenderma?en aus:

$URL/index.php?=eine_unterseite

Die SEO-Funktion von Get Simple soll folgendes machen:

$URL/eine_unterseite/

Es gibt eigentlich auch schon Vieles dazu im Netz, aber scheinbar funktioniert das entweder nicht mit der Froxlor-Konfiguration zusammen oder hakt einfach an meinem Unverst?ndnis ;)

Meine erste Idee dazu war folgende als "Eigene VHOST-Einstellungen" in Froxlor einzutragen:

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

Unter sites_enabled sehe ich dann nach Aktivierung folgendes Konstrukt:

server {
        listen IP:80;
        server_name example.com *.example.com mail.example.com *.mail.example.com;
        access_log /var/customers/logs/example.com-access.log combined;
        error_log /var/customers/logs/example.com-error.log error;
        root /var/customers/webs/test/;
        location / {
                index index.php index.html index.htm;
                try_files $uri $uri/ @rewrites;
                try_files $uri $uri/ /index.php?=$uri&$args;
        }
        location @rewrites {
                rewrite ^ /index.php last;
        }
        location /awstats {
                alias /var/customers/webs/test/awstats/example.com/;
                auth_basic "Restricted Area";
                auth_basic_user_file /etc/nginx/froxlor-htpasswd/2-sd7f67sd6f76sd87.htpasswd;
        }
        location ~ ^/awstats-icon/(.*)$ {
                alias /usr/share/awstats/icon/$1;
        }
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/nginx/example.com-php-fpm.socket;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
}

Ich habe auch schon etwas an dem try files Konstrukt geschraubt, aber bekomme st?ndig einen 404

Hat jemand zuf?llig den richtigen Riecher und kann mir einen Tipp geben?

Danke schon mal.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

Hallo Timmaeh,

 

vielen Dank, Du hattest nat?rlich recht, dass mir try_files noch nicht wirklich gel?ufig sind. Der Tipp war super.

Jetzt hab ich das ganze Konstrukt angepasst und jetzt funktioniert das auch so wie ich es mir vorstelle, etwas anders als vorher, aber funktioniert perfekt.

location / {
    rewrite /?([A-Za-z0-9_-]+)/?$ /index.php?id=$1&$2 last;
}
    
location /admin {
    try_files    $uri    $uri/    /admin/index.php?id=$uri&$args;
}
 location ~* \.(?:ico|js|gif|jpg|png)$ {
#expires 14d;
}
 
location ~* \.(htm|css|html)$ {
#expires 2d;
}
 
location ~* \.xml$ { deny all; }
location ~* \.xml\.bak$ { deny all; }
location = /sitemap.xml { allow all; }
 
location ~ /\. { deny all; }
 
location ^~ /uploads/ {
if ($request_uri ~* \.php$) {return 403;}
} 
Link to comment
Share on other sites

Ich glaube, du hast das Prinzip von try_files nicht ganz verstanden. Der Befehl pr?ft die Angaben in der Reihenfolge und die erste Angabe, die existiert, wird ausgeliefert.

 

Da du hier 2 try_files hintereinander hast, wird das 2te niemals ausgef?hrt. Denn f?r das erste try_files existiert die Datei nicht, also leitet diese auf die index.php weiter. Das 2te try_files l?st dann wom?glich den 404 Error aus, da die Config nicht passt. Schau hier am Besten mal ins nginx/error.log.

 

Mein L?sungsansatz w?re, dass dein Rewritefall in das location @rewrites Konstrukt mit hinein muss, bzw. den darin enthaltenen Fall ersetzt. Du willst nicht auf index.php weiterleiten, sondern auf index.php?=mein/pfad/, also erweitere hier das index.php.

 

Welche Variable hier allerdings die richtige ist, kann ich dir nicht sagen. Da sollte Google dienlich sein, falls du es durch herumprobieren nicht selbst herausfindest.

 

 

z.B.:

server {

        ...

        location / {
                index index.php index.html index.htm;
                try_files $uri $uri/ @rewrites;
        }
        location @rewrites {
                rewrite ^ /index.php?=$uri&$args last;
        }

        ...

}
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...