可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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.
回答1:
.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.
回答2:
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
回答3:
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.
回答4:
If the default behavior (example.com/?p=42
) is working, you should:
- Change to your preferred permalink style:
Admin: Settings > Permalinks
, and click Save. Sometime it fixes the issue. If it didn't:
- Verify that the file
/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
回答5:
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
回答6:
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>
- Copy the code and paste in the
.htaccess
file.
回答7:
This error is causing due to disabled of rewrite mod in apache httpd.conf document ,just uncomment it and enjoy the seo friendly permalinks
回答8:
- Check that the directory on .htaccess are the correct
- Check the fields "siteurl" and "home" are the correct
回答9:
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!
回答10:
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.
回答11:
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.
回答12:
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/
回答13:
You may have .htaccess disallowed in webhost settings.
Setting to default permalinks would work in that case.
回答14:
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.
回答15:
I have the same problem and so I remove the Apache and make it again and the problem was solved.
回答16:
Just Navigate to Settings->Permalink in your dashboard and then Save Changes button in the last.\
回答17:
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).
回答18:
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 :-)
回答19:
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.
回答20:
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
回答21:
after 2 long days,
the solution was to add options +FollowSymLinks
to the top of my .htaccess
file.
回答22:
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.