Réécriture d'url : la fonction fonctionne / l'article n'apparaît pas

Bonjour à tous,

Avec la sortie du RPI 2 et une nouvelle connexion Internet je me repenche sur PluXml.
J'ai fait une config sur un Raspberry B+ en attendant la nouvelle bête. J'ai installé un Rasbian et NGINX.
Heureuse surprise d'ailleurs, la quantité de tutoriaux autour de Raspbian et PluXml a vraiment augmenté, plein d'explications partout pour le noob que je suis c'est super agréable d'avoir les explications.

Pour le coup j'ai réussi à créer mon serveur, paramétrer ma box et Nginx, ainsi que réaliser le paramétrage de pluxml et la redirection d'un nom de domaine vers mon site en passant par un noip.

Je bugge sur un point. Je veux autant que possible optimiser le référencement du site, et je veux utiliser la réécriture d'url. J'ai donc été cocher la case présente dans les paramètres avancés de PluXml. La réécriture s'active bien, car le chemin change. Par contre, la page statique n'affiche plus son contenu, c'est le contenu article de la page home qui s'affiche partout.

Auriez vous des pistes de recherche ? J'ai parcouru pas mal de topics sur ce forum qui parlent de la réécriture, et je n'ai pas trouvé la solution à mon problème.

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • mangepatatemangepatate Member
    mars 2015 modifié
    Oui je l'avais vue. Je me suis servi du premier code, par contre je ne comprends pas la partie "Simplification et optimisation de l'url rewriting". C'est une explication pour le code cité au dessus ou alors un code à ajouter ailleurs ?

    Je vais repasser sur les infos de cette page et vous dire, je peux éventuellement vous copier le contenu de mon fichier de conf Nginx tout à l'heure si ça peut aider ? Je pense que le souci vient de ma config.

    Edit : voici le contenu de mon fichier Nginx /etc/nginx/sites-available/default.
    [== Indéfini ==]
    # You may add here your
    # server {
    #       ...
    # }
    # statements for each of your virtual hosts to this file
    
    ##
    # You should look at the following URL's in order to grasp a solid understanding
    # of Nginx configuration files in order to fully unleash the power of Nginx.
    # http://wiki.nginx.org/Pitfalls
    # http://wiki.nginx.org/QuickStart
    # http://wiki.nginx.org/Configuration
    #
    # Generally, you will want to move this file somewhere, and start with a clean
    # file but keep this around for reference. Or just disable in sites-enabled.
    #
    # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
    ##
    
    server {
            #listen   80; ## listen for ipv4; this line is default and implied
            #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
    
            root /usr/share/nginx/www;
            index index.html index.htm;
    
            # Make site accessible from http://localhost/
            server_name localhost;
    
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ /index.html;
                    # Uncomment to enable naxsi on this location
                    # include /etc/nginx/naxsi.rules
            }
    
            location /doc/ {
                    alias /usr/share/doc/;
                    autoindex on;
                    allow 127.0.0.1;
                    allow ::1;
                    deny all;
            }
    
            # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
            #location /RequestDenied {
            #       proxy_pass http://127.0.0.1:8080;
            #}
    
            #error_page 404 /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            #error_page 500 502 503 504 /50x.html;
            #location = /50x.html {
            #       root /usr/share/nginx/www;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #       fastcgi_split_path_info ^(.+\.php)(/.+)$;
            #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            #
            #       # With php5-cgi alone:
            #       fastcgi_pass 127.0.0.1:9000;
            #       # With php5-fpm:
            #       fastcgi_pass unix:/var/run/php5-fpm.sock;
            #       fastcgi_index index.php;
            #       include fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #       deny all;
            #}
    
            # On cache le fichier version:
            location /version {
                    return 404;
            }
    
            # Ligne très importante pour éviter le vol de mot de passe
            location /data/configuration/users.xml {
                    return 403;
            }
    
            # Et on défini les règles pour l'URL Rewriting:
            if (!-f $request_filename){
                    set $rule_0 1$rule_0;
            }
            if (!-d $request_filename){
                    set $rule_0 2$rule_0;
            }
            if ($request_filename !~ "-l"){
                    set $rule_0 3$rule_0;
            }
            if ($rule_0 = "321"){
                    rewrite /([feed\/].*)$ /index.php? last;
            }
            rewrite /feed\/(.*)$ /feed.php? last;
    
    }
    
    
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #       listen 8000;
    #       listen somename:8080;
    #       server_name somename alias another.alias;
    #       root html;
    #       index index.html index.htm;
    #
    #       location / {
    #               try_files $uri $uri/ =404;
    #       }
    #}
    
    
    # HTTPS server
    #
    #server {
    #       listen 443;
    #       server_name localhost;
    #
    #       root html;
    #       index index.html index.htm;
    #
    #       ssl on;
    #       ssl_certificate cert.pem;
    #       ssl_certificate_key cert.key;
    #
    #       ssl_session_timeout 5m;
    #
    #       ssl_protocols SSLv3 TLSv1;
    #       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    #       ssl_prefer_server_ciphers on;
    #
    #       location / {
    #               try_files $uri $uri/ =404;
    #       }
    #}
    

    Edit2 : Je n'ai pas de .htaccess à la racine, j'ai les fichiers et dossiers suivants uniquement
    config.php
    data
    index.php
    robot.txt
    themes
    version
    core
    feed.php
    plugins
    sitemap.php
    update
  • Personne n'a d'idée salvatrice ? :)
  • mangepatatemangepatate Member
    avril 2015 modifié
    J'ai continué à chercher l'erreur pour ceux qui ont le même genre de souci.

    J'ai reçu un Raspberry Pi 2 et j'ai donc maintenant 2 configs qui tournent en parallèle.

    RPI1 : Nginx + PluXml. Le site fonctionne bien. Quand j'active la réécriture d'url aucun message d'erreur n'est affiché, le lien vers la page statique est bien dans le menu et est bon. Par contre le contenu de la page statique n'est pas affiché.

    RPI2 : Apache 2 + PluXml. Le site fonctionne bien. Quand j'active la réécriture d'url il y'a une erreur
    "Not Found
    The requested URL /static1/statique-1 was not found on this server."

    A titre d'information niveau performances, sur le RPI1 Nginx mes pages sont générées en 0.3s, sur le RPI2 Apache mes pages sont générées en 0.16s.
    J'ai remarqué quelque chose de curieux en parcourant les tutoriels, quand j'active la réécriture d'url et que je fais un "sudo ls -ln /var/www/" je ne vois pas de fichier .htaccess apparaître, alors que de nombreux liens-tutos sur le sujet le mentionnent.

    Un début de solution :

    Sur le serveur Apache2 j'ai été dans /etc/apache2/sites-availables/default, édité le fichier en mettant toutes les lignes AllowOverrride à All et ça fonctionne. J'essaie maintenant de trouver l'équivalent sur Nginx.
  • JoséJosé Member
    Bonjour

    je rencontre la même difficulté avec mon site Pluxml hébergé sur un serveur linux.

    la page d'accueil s'affiche normalement mais je n'ai pas d'accès aux autres pages. le serveur me renvoie une erreur 500.

    pour info je ne n'ai pas touché ou modifié le .htaccess à la racine.

    toute proposition m'intéresse.

    José
  • Est-ce que la réécriture d'url est activée sur ton serveur ? Regarde ce que dis ton phpinfo().
  • JoséJosé Member
    voilà ce qui est indiqué:

    ✔ Module apache de réécriture d'url mod_rewrite disponible
  • JoséJosé Member
    Je teste plusieurs configuration et pour essayer de comprendre :

    avec le plugin activé et la réécriture d'url activée : j'ai bien le lien Mon_site/ma_page mais j'ai l'erreur :

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.




    dans la configuration du plugin j'ai laissé un blanc sur le choix de l'extension ( j'ai aussi testé avec extension )

    Est ce que quelqu'un peut apporter son témoignage sur son expérience . merci par avance, José

    ci dessous le code .htaccess
    [== Indéfini ==]
    # BEGIN -- Pluxml
    Options -Multiviews
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /Parentele/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    # Réécriture des urls
    RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    </IfModule>
    <Files "version">
    	Order allow,deny
    	Deny from all
    </Files>
    # END -- Pluxml
    
  • PPmarcelPPmarcel Member
    avril 2015 modifié
    mangepatate :
    mangepatate a écrit:
    Je pense que le souci vient de ma config.
            # Et on défini les règles pour l'URL Rewriting:
            if (!-f $request_filename){
                    set $rule_0 1$rule_0;
            }
            if (!-d $request_filename){
                    set $rule_0 2$rule_0;
            }
            if ($request_filename !~ "-l"){
                    set $rule_0 3$rule_0;
            }
            if ($rule_0 = "321"){
                    rewrite /([feed\/].*)$ /index.php? last;
            }
            rewrite /feed\/(.*)$ /feed.php? last;
    
    

    Salut,

    La synthaxe de nginx a évolué. Peux-tu essayer ceci ?
        if (!-e $request_filename) {
            rewrite ^/(?!feed)(.*)$ /index.php?$1 last;
        }
    
        rewrite ^/feed\/(.*)$ /feed.php?$1 last;
    

    Une URL optionnelle peut s'écrire "(?chemin)" en regex, mais pas "[chemin]" (qui ne désigne pas le mot "chemin" dans sa globalité, mais qui désigne les lettres. ex: "ou 'c', ou 'h', ou 'e', ou 'm', etc").
    Le "-e" dans le test vérifie à la fois l'existence des fichiers, répertoires et liens symboliques, ce qui simplifie l'écriture.

    Si ça fonctionne, je mettrai à jour le wiki à ce sujet.
  • PPmarcelPPmarcel Member
    avril 2015 modifié
    José :

    Le top serait de lire le log d'erreur de apache, pour savoir ce dont il de plaint.

    As-tu un accès sur le serveur qui héberge ton site ? Si le système d'exploitation est linux, tu peux trouver les logs apache dans /var/log/apache2/quelque-chose-error.log ou /var/log/httpd/quelque-chose-error.log

    Selon la configuration, tu peux avoir tes erreurs dans error.log, ou un nom de fichier contenant "error" dedans.
  • JoséJosé Member
    Merci pour ta proposition , je vais contacter mon hébergeur et voir ce qui peut être la cause du dysfonctionnemnt

    José
  • Hello,

    Je reviens avec quelques mois de retard, j'ai testé les lignes mises ci-dessus et rien ne change. Merci pour la proposition en tous cas ;)
  • Bonjour PPmarcel Tu peux mettre à jour la doc? Ca marche pour moi
    PPmarcel a écrit:
    mangepatate :
    mangepatate a écrit:
    Je pense que le souci vient de ma config.
            # Et on défini les règles pour l'URL Rewriting:
            if (!-f $request_filename){
                    set $rule_0 1$rule_0;
            }
            if (!-d $request_filename){
                    set $rule_0 2$rule_0;
            }
            if ($request_filename !~ "-l"){
                    set $rule_0 3$rule_0;
            }
            if ($rule_0 = "321"){
                    rewrite /([feed\/].*)$ /index.php? last;
            }
            rewrite /feed\/(.*)$ /feed.php? last;
    
    

    Salut,

    La synthaxe de nginx a évolué. Peux-tu essayer ceci ?
        if (!-e $request_filename) {
            rewrite ^/(?!feed)(.*)$ /index.php?$1 last;
        }
    
        rewrite ^/feed\/(.*)$ /feed.php?$1 last;
    

    Une URL optionnelle peut s'écrire "(?chemin)" en regex, mais pas "[chemin]" (qui ne désigne pas le mot "chemin" dans sa globalité, mais qui désigne les lettres. ex: "ou 'c', ou 'h', ou 'e', ou 'm', etc").
    Le "-e" dans le test vérifie à la fois l'existence des fichiers, répertoires et liens symboliques, ce qui simplifie l'écriture.

    Si ça fonctionne, je mettrai à jour le wiki à ce sujet.
Connectez-vous ou Inscrivez-vous pour répondre.