De ce permalink-urile funcționează cu /index.php/%postname% dar nu doar cu %postname%?

12 iul. 2011, 14:33:21
Vizualizări: 28.5K
Voturi: 7

Am o problemă cu permalink-urile WordPress. Când schimb permalink-urile în permalink-uri prietenoase primesc erori 404 pentru pagini. Ciudat este că atunci când folosesc /index.php/%postname% link-urile paginilor funcționează bine, dar am nevoie să scap de partea cu index.php.

Am citit despre modificări în fișierul httpd.conf dar nu pot găsi fișierul nicăieri. Fișierul htaccess pare corect din ce am putut verifica, îl puteți vedea mai jos

# 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

Aveți alte idei?

Mulțumesc Emma

9
Comentarii

ce gazdă folosești?

Bainternet Bainternet
12 iul. 2011 14:41:26

Hei, e o companie locală, care rulează un server din magazinul lor. Au un panou web foarte simplu!

emmahiggy emmahiggy
12 iul. 2011 15:20:52

Poate verifici permisiunile fișierului .htaccess. Poate WP nu poate să-l acceseze?

Cristian Cristian
12 iul. 2011 15:38:34

Am setat permisiunile fișierului htaccess la 644, permalink-ul se schimbă dar paginile nu se actualizează cu el, așa că primesc erori 404 chiar dacă permalink-ul este corect.

emmahiggy emmahiggy
12 iul. 2011 17:28:01

Care este valoarea exactă a setărilor pentru permalink-uri?

Alex Older Alex Older
12 iul. 2011 17:39:19

Este o structură personalizată de tip /index.php/%postname%

emmahiggy emmahiggy
12 iul. 2011 18:33:36

Acest site este găzduit pe un server Linux? Am avut această problemă pe site-ul unui client, dar era pe un server Windows.

Jeremy Jared Jeremy Jared
12 iul. 2011 21:37:14

Este un server Windows, voi încerca soluția ta de mai jos și voi reveni cu feedback. Mulțumesc mult.

emmahiggy emmahiggy
13 iul. 2011 17:11:19

Doamne, nu pot să cred că această eroare încă apare în 2021

Bharat Bharat
1 ian. 2021 22:48:37
Arată celelalte 4 comentarii
Toate răspunsurile la întrebare 13
2
12

Am avut tot codul corect în fișierul .htaccess, dar a fost complet suprascris în fișierul implicit Ubuntu /etc/apache2/apache2.conf. Am schimbat intrarea pentru / și /var/www din AllowOverride None în AllowOverride All, am repornit Apache și acum totul funcționează perfect.

29 apr. 2015 21:35:38
Comentarii

A funcționat !! Mulțumesc

Bharat Bharat
1 ian. 2021 22:48:51

Genial, a funcționat. Acest lucru trebuie actualizat undeva în manual

Jonathan S. Fisher Jonathan S. Fisher
1 sept. 2021 20:40:20
0

Presupun că mod_rewrite nu este activat. În funcție de serverul pe care îl utilizați, activați mod_rewrite.

Apoi, dacă sunteți pe Linux, editați manual /etc/apache2/sites-enabled/000-default și schimbați AllowOverride de la None la All (sau în directorul în care se află site-ul dvs.).

Aici, la punctele 3 și 4 ar trebui să găsiți soluții pentru Windows.

13 iul. 2011 23:56:04
0

Am lucrat la o problemă similară de ieri și în sfârșit am găsit soluția.

1) Asigură-te că fișierul .htaccess are permisiunea 666

2) Activează mod_rewrite:

sudo a2enmod rewrite

3) Repornește Apache:

sudo systemctl restart apache2

4) Adaugă AllowOverride All pentru directorul public în /etc/apache2/apache2.conf

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

5) Repornește Apache:

sudo systemctl restart apache2

6) Mergi în panoul de control WordPress și schimbă setările de permalink (dacă ai pe postname, schimbă la plain sau invers). Verifică site-ul.

7) Revino în panoul de control și schimbă setările de permalink la cele dorite.

8) Revenire la permisiunea 644 pentru .htaccess

Aceasta a funcționat pentru mine.

26 mar. 2019 06:21:46
0

Folosești cumva Names.co.uk ca furnizor de hosting?

Am avut aceeași problemă ca tine și, după câteva ore de căutări pe Google, am aflat că ei folosesc un server Zeus - nu Apache - și acesta nu suportă funcția Mod_ReWrite. Aceasta pare să explice simptomele confuze. (Nu aveam fișier .htaccess - dar nici erori raportate de WordPress când schimbam preferințele pentru legături permanente.)

Ei au o soluție alternativă pentru Zeus, detaliată aici:

http://www.names.co.uk/support/hosting/linux_hosting/1119-wordpress_rewrite_script.html

Îmi dau seama că au trecut câteva luni de la postarea ta inițială și probabil ai rezolvat deja problema - dar pentru oricine va găsi asta în viitor, ar fi bine să verifice dacă furnizorul de hosting folosește Zeus sau alt server non-Apache.

Actualizare: Te rog să consulți codul pe care l-am postat aici la o întrebare similară

20 sept. 2012 04:26:13
1

Am luptat cu această problemă de ceva timp și astăzi am reușit să o rezolv. Am descoperit că modulul meu mod_rewrite nu a fost activat toată această perioadă. Informațiile de pe acest link mi-au fost foarte utile. Explică totul, de la cum să verifici dacă mod_rewrite este activat, și dacă nu - cum să-l activezi. Sper că aceste informații sunt utile pentru oricine este nou în WordPress și se confruntă cu setarea permalinkurilor prietenoase.

8 ian. 2016 14:05:33
Comentarii

Toate informațiile relevante ar trebui să facă parte din răspunsul tău, în special răspunsul tău nu ar trebui să depindă de link-uri externe, deoarece informațiile de acolo ar putea dispărea și atunci răspunsul tău devine mai mult sau mai puțin inutil. Așadar, te rog să adaugi informațiile în răspunsul tău - mulțumesc.

Nicolai Grossherr Nicolai Grossherr
8 ian. 2016 15:46:06
0

Încearcă să setezi fișierul htaccess la permisiunile 777, apoi intră și actualizează setările de legături permanente la ce dorești. Dacă funcționează, revino și schimbă înapoi permisiunile la 644.

12 iul. 2011 21:30:29
1

După ce am adăugat conținutul meu, am găsit un articol care sugera ștergerea fișierului .htaccess, apoi mergând la Setări/permalinks și eliminând index.php. Articolul spunea că WordPress va afișa o eroare sugerând să creezi fișierul .htaccess. Am decis să încerc, dar nu a făcut nimic. Ceea ce am descoperit a fost că permalinkurile mele funcționau în continuare chiar și cu fișierul .htaccess șters. La început, asta m-a nedumerit. Am deschis clientul meu FTP și am navigat prin fișiere. Am observat că exista un fișier .htaccess acolo după ce l-am șters. Nu știu dacă este WordPress, Contul meu de Hosting sau ce anume l-a creat, dar știu că acest lucru este nou. Acest lucru nu s-a întâmplat înainte. Ai putea încerca această metodă dacă nimic altceva nu funcționează.

Nu am putut recrea problema din întrebarea ta, așa că nu sunt 100% sigur dacă funcționează pentru tine. Dar merită încercat.

Cu respect, Jeremy Jared

12 iul. 2011 21:47:53
Comentarii

Bună, am încercat cele de mai sus fără succes, fișierul htaccess nu s-a recreat singur, dar setarea permalinkurilor nu a funcționat, așa că am încărcat din nou fișierul htaccess. Oricum, mulțumesc

emmahiggy emmahiggy
13 iul. 2011 18:18:07
0

Încearcă să înlocuiești codul din .htaccess cu acesta:

# -------------------------------------------------------------------------
# Opțiuni pentru motorul de rescriere
# -------------------------------------------------------------------------

RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
RewriteRule ^/index.php$ / [NC,P,R=301]
RewriteCond %{REQUEST_URI} !/wp-admin
RewriteRule ^/(.*)/$ /index.php/$1 [NC]

# Redirecționează 'www.yourblogsite.com/anything/anything/index.php'
# către 'www.yourblogsite.com/anything/anything/'

RewriteRule ^/(.*)/index.php$ /$1/ [NC,P,R=301]

# -------------------------------------------------------------------------
# FINAL REGULI DE RESCRIERE
# -------------------------------------------------------------------------

Încă mai aveam datele de autentificare ale unui client pentru care a trebuit să rezolv această problemă. Asta am folosit pentru el. Este un server IIS, nu sunt sigur dacă contează, dar poți încerca. Mult noroc, JJ

13 iul. 2011 18:43:50
0

Cred că gazda ta folosește IIS (Internet Information Services). IIS utilizează "URL Rewrite" și nu "mod_rewrite", așa că aruncă o privire în Codex.

"Pretty" permalink-urile necesită de obicei mod_rewrite, iar IIS (comun pe serverele Windows) nu suportă mod_rewrite. (Dacă folosești Apache 2.0.54 pe Windows, mod_rewrite poate funcționa, cu condiția să fie activat în apache\conf\httpd.conf.)

20 nov. 2012 23:42:05
2

Știu că este prea târziu să răspund acum, dar dacă încă cauți o soluție; iată o metodă rapidă pentru asta:

Rezolvat - Cum să elimini index.php din URL-ul WordPress pe IIS7?

10 mar. 2013 15:05:08
Comentarii

Te rog, adaugă o soluție în Răspunsul tău, dacă linkul moare, acesta nu va mai fi util.

brasofilo brasofilo
10 mar. 2013 16:34:21

@brasofilo Mama lui Dumnezeu....! Link mort! ;)

Sunny R Gupta Sunny R Gupta
15 oct. 2014 17:24:48
0

Am avut această problemă pe Mac OSX și următoarele informații au fost foarte utile. Se pare că implicit calculatoarele Mac nu sunt pregătite pentru .htaccess și Apache va ignora fișierul până când anumite fișiere (specificate în linkurile de mai jos) sunt modificate:

http://wordpress.org/support/topic/getting-pretty-permalinks-working-on-a-mac-105-server

http://clagnut.com/blog/350/

Sper că acest lucru vă ajută!

14 mar. 2013 07:26:47
0

Acest ghid este pentru serverul Apache: Salut, mai întâi verifică-ți gazda virtuală dacă folosești cea implicită, verifică dacă directorul rădăcină al WordPress conține următoarele:

  <Directory ROOT_DIR_FOR_WORDPRESS>  
            php_admin_flag engine on  
            AllowOverride All  
            Order allow,deny  
            allow from all  
            RewriteEngine On  
            RewriteOptions Inherit  
            Require all granted  
    </Directory>  

Verifică dacă fișierul .htaccess din directorul rădăcină WordPress are permisiuni de citire și scriere (666) și conține următoarele:

# 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  

Activează modulul rewrite (sudo a2enmod rewrite - pentru utilizatorii Linux)

Acum actualizează structura permanentă a linkurilor structură personalizată: /%postname%/

salvează și verifică dacă apar erori Acum ar trebui să funcționeze

De cele mai multe ori problema este că fișierul .htaccess este suprascris de regulile gazdei virtuale

22 iul. 2016 08:16:29
1

Trebuie să executați sudo a2enmod rewrite pentru a activa modulul rewrite.

20 feb. 2019 18:59:59
Comentarii

Bine ați venit pe WPSE. Ar trebui să adăugați câteva detalii suplimentare în răspunsul dvs. pentru persoanele care ar putea să nu înțeleagă despre ce vorbiți aici. Mai multe detalii sunt întotdeauna mai bune, altfel veți primi întrebări de genul "Unde găsesc sudo în panoul de administrare WordPress?" (De asemenea, ar trebui să menționați alte detalii specifice, observând că acest lucru poate să nu funcționeze în toate cazurile, deoarece a2enmod este specific sistemelor Debian.)

butlerblog butlerblog
20 feb. 2019 19:45:00