Reputation: 9049
All of a sudden I go to my WordPress website and all the pages give me a 404 page not found page. I'm assuming the problem lies with the permalink structure, which I could swear I did not touch. The permalink setting is on "month and name."
I've researched similar instances of this problem online and a lot of it has to do with the .htaccess
file? I tried finding, but I can't. Perhaps it got deleted somehow? Where is it supposed to be located.
Any suggestions will be helpful
and of course I can see hidden files.
Upvotes: 143
Views: 290481
Reputation: 546
This scenario can also be caused by a database version that's out of sync with the WP files installed on server. Nothing else listed here worked for me; I solved it with a manual WP update.
Upvotes: 1
Reputation: 5441
Wanted to share my two cents. Recently came accross that very same issue installing WordPress 5.9
. Year 2021.
Configuration:
Platform MAC, Software
XAMPP
, WordPress5.9
None of the previous answer did it for me.
The issue was due to the fact that files permissions accross the XAMPP
folder were set to "Read only".
XAMPP
folder. (Usually in the Applications folder).XAMPP
folder.Get info
.Sharing and permissions
→ Everyone
→ Read & Write
.Apply to enclosed items
.Upvotes: 0
Reputation: 99
Go to your WordPress Dashboard, scroll down to settings, select Permalink,
in custom settings that appear, go to custom structure and replace the text in the text field with
/index.php/%year%/%monthnum%/%day%/%postname%/
and then save changes
Upvotes: 2
Reputation: 774
after 2 long days,
the solution was to add options +FollowSymLinks
to the top of my .htaccess
file.
Upvotes: 1
Reputation: 2501
Basically the .htaccess file should exists and the httpd.conf should be correct.
In my case, I changed the file /etc/apache2/apache2.conf in section:
<Directory "/var/www/html">
Line changed is:
AllowOverride None
to
AllowOverride All
And restart the web server with
systemctl restart apache2
Upvotes: 93
Reputation: 4360
Before trying to do any permalink or server config changes, please check you .htaccess file. This mostly is a corrupt or blank .htaccess file issue. Reset the htaccess file to the default
# 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
Upvotes: 3
Reputation: 17556
If the default behavior (example.com/?p=42
) is working, you should:
Admin: Settings > Permalinks
, and click Save. Sometime it fixes the issue. If it didn't:/path/to/wordpress/.htaccess
has been changed and now includes the line RewriteEngine On
. If it doesn't include the line, it's a Wordpress permissions issue.Verify that the 'rewrite' module is loaded: create a PHP file with
<?php
phpinfo()
?>
in it, open it in the browser and search for mod_rewrite
. It should be in the 'Loaded Modules' section.
If it's not, enable it - Look at your apache default index.html
file for details - in Ubuntu, you do it with the helper a2enmod
.
Verify that apache server is looking at the .htaccess
file. open httpd.conf
- or it's Ubuntu's alternative, /etc/apache2/apache2.conf
. In it, You should have something like
<Directory /path/to/wordpress>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
After making these changes, don't forget to restart your apache server. sudo service apache2 restart
Upvotes: 42
Reputation: 20212
We had the same problem and solved it by checking the error.log of our virtual host. We found the following message:
AH00670: Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions : /srv/www/htdocs/wp-intranet/
The solution was to set Options All
and AllowOverride All
in our virtual host config.
Upvotes: 4
Reputation: 70
For nginx users
Use the following in your conf file for your site (usually /etc/nginx/sites-available/example.com
)
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
This hands off all permalink requests to index.php with a URI string and supplied arguments. Do a systemctl reload nginx
to see the changes and your non-homepage links should load.
Upvotes: 0
Reputation: 146
I just changed the permalink to 'month and day'of all the posts by ging to setting>permalink.
Now all posts are open and working fine.
Again, I renamed to all posts to its actual permalink. Its again working fine.
This method worked for me :-)
Upvotes: 0
Reputation: 460
IF all this dont work, your .htaccess is correct, and permalinks trick didnt work, you may have not enabled your apache2 rewite mod.
I ran this and my issue was solved:
sudo a2enmod rewrite
Upvotes: 34
Reputation: 928
If your WordPress installation is in a subfolder (ex. https://www.example.com/subfolder) change this line in your WordPress .htaccess
RewriteRule . /index.php [L]
to
RewriteRule . /subfolder/index.php [L]
By doing so, you are telling the server to look for WordPress index.php
in the WordPress folder (ex. https://www.example.com/subfolder) rather than in the public folder (ex. https://www.example.com).
Upvotes: 1
Reputation: 927
Case 1:- Let us think if migrate site from one hosting to another hosting if see this kind of issue.
Solution:- Simply go to old server copy .htaccess file code, then past in new server .htaccess file. 99% it i will works.
Upvotes: 1
Reputation: 1552
Most of the time this issue is fixed by simply visiting the Settings -> Permalink page in the WordPress admin and click Save (as several other answers already pointed out). When this page is accessed, WordPress rewrites the directives in the .htaccess
file which magically fixes the issue. The issue often happens after moving a site (the site breaks because the .htaccess
gets left behind or the settings need to be updated).
If WordPress doesn't have the right permissions to write the .htaccess
file, a notice will appear at the top of the page and further instructions at the bottom when the settings are saved. In this case you need to edit the .htaccess
file yourself or, better, to fix the permissions on that file. The file is at the root of the WordPress installation. cd
into the directory and sudo chmod 644 .htaccess
. You might also want to check if the file belongs to the right group and change that is needed with chown
. Ask your hosting provider if you don't know how to do that.
If you are on shared hosting that's probably all you can do. If you still have the issue you might want to talk to you hosting provider's support. Otherwise, make sure the use of .htaccess
files is enabled on the server, as @georgeos already suggested. Note that httpd.conf
is not always used (Ubuntu indicates it is deprecated but the official Apache docs still says it is often the main configuration file). /etc/httpd/conf/httpd.conf
and /etc/apache2/apache2.conf
seem to be the most common places for this file. Find the block for the public folder, usually <Directory /var/www/>
and make sure that the AllowOverride
directive is set to All
. If it is set to None
, your .htaccess
file is simply ignored by the server.
Upvotes: 4
Reputation: 61
Just Navigate to Settings->Permalink in your dashboard and then Save Changes button in the last.\
Upvotes: 0
Reputation: 585
Within the WordPress admin interface do the following:
Go to admin setting
Click on permalink and select post name in radio button.
Scroll down and you will see .htaccess
code here like.
<IfModule mod_rewrite.c>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
.htaccess
file.Upvotes: 10
Reputation: 2056
I had this issue not so long ago. I had reset my permalink to default or just saved it, updated themes/core to (4.7.4)/plugins, deactivated all plugins, switched to default theme, optimized database, .htaccess is already default, checked file permissions, mod_rewrite is on.
So far nothing works, what works are the posts, new page, the /contact page EXCEPT for old pages.
Basically, the pages/URLs that aren't working are:
/breeding
/training
/training/*
/breeding/*
Ultimate, I found these files in the root folder:
/breeding.php and /training.php
I renamed both files and the pages above worked.
Upvotes: -1
Reputation: 1786
You may have .htaccess disallowed in webhost settings. Setting to default permalinks would work in that case.
Upvotes: 2
Reputation: 673
I installed mod_rewrite to fix the issue. Below link provides an installation guide:- http://www.iasptk.com/enable-apache-mod_rewrite-ubuntu-14-04-lts/
Upvotes: 2
Reputation: 2021
Fixing that problem is very simple if you was using permalinks other than the default
such as Day and name
, Month and name
, Numeric
, Post name
or Custom Structure
, you only need to
Login to your admin area: Settings > Permalinks
which should be : http://yoursite.com/wp-admin/options-permalink.php
Choose Default
permalink setting, then save changes
Then you can return it again to your other previous permalink choice or keep it as default
as yo wish
Note that this problem can happen when you move your site from a domain or location to another one.
Upvotes: 59
Reputation: 667
I have the same problem and so I remove the Apache and make it again and the problem was solved.
Upvotes: 0
Reputation: 91
This error is causing due to disabled of rewrite mod in apache httpd.conf document ,just uncomment it and enjoy the seo friendly permalinks
Upvotes: 9
Reputation: 126
If you have FTP access to your account:
First, login to your wp-admin and go to Settings > Permalinks
You should see something at the bottom that says:
"If your .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all."
If this is true do the following:
Go into preferences for your FTP client and make sure hidden files are displayed (varies depending on your FTP client) - If you don't do this you won't be able to find your htaccess file
Go to the folder that your wp-admin, wp-content, wp-includes directories are located. Check for .htaccess file. If it exists skip to step 4
If it does not exist, create a new blank file in your FTP program called .htaccess
Change the CHMOD for your .htaccess file to 666 (your preference on how you want to do this)
Go back to your Permalinks page and edit the link structure you want. Problem should be solved!
Make sure to change the chmod of the htaccess file back to 644 after you are done.
Just had the same problem and it seemed to fix it instantly! Good luck!
Upvotes: 3
Reputation: 1015
Upvotes: 4
Reputation: 1483
.htaccess is a hidden file, so you must set all files as visible in your ftp.
I suggest you return your permalink structure to default ( ?p=ID ) so you ensure that .htaccess is the problem.
After that, you could simply set "month and name" structure again, and see if it works.
PS: Have you upgraded to 3.1? I've seen some people with plugin issues in this case.
Upvotes: 106