wordpress永久链接无法正常工作 - htaccess似乎没问题,但在页面上出现404错误

时间:2013-10-16 10:15:18

标签: wordpress permalinks

我将永久链接结构更新为/%postname%/并且更新了我的.htaccess:

# 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

但我仍然在网页上收到404错误。我还需要更改其他设置吗?

编辑:如果它有助于apache日志似乎直接在永久链接文件夹中查找。即:

[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/

10 个答案:

答案 0 :(得分:71)

对于登陆此页面的其他人 - 另一个问题可能是(如果您使用Apache作为您的Web服务器)是您的httpd.conf或您的sites-available / sitename.conf文件需要编辑。

您的网络目录需要允许.htaccess文件覆盖其设置。

在文件中查找您的网站目录 - 它将位于conf文件的大部分内容或隔离到VirtualHost部分。

<Directory /path/to/site>
     #add the following setting to allow .htaccess in your web dir to work
     AllowOverride FileInfo

     #other settings ---

</Directory>

这将允许您在WordPress中设置所需的WordPress URL。

***编辑 - 谢谢你nietonfir更新。首先使用最少量的权限。如果这不起作用,请将AllowOverride FileInfo替换为AllowOverride All

答案 1 :(得分:40)

可能有多种因素阻止重写规则起作用。我的ubuntu服务器需要更改3件才能让永久链接工作。

在较新版本的apache2中,您需要启用模块:

sudo a2enmod rewrite
sudo service apache2 restart

您可能还需要修改apache2.conf文件。

sudo nano /etc/apache2/apache2.conf

将您的网络目录覆盖规则更改为 AllowOverride All

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

之后,再次重启服务。

WordPress安装目录中的.htaccess文件需要由网络服务器拥有或可读/可修改。

这可以通过将所有者更改为www-data(通常是webserver用户)或更改权限来实现。

sudo chown www-data /var/www/wordpress-install/.htaccess 

OR

sudo chmod 664 /var/www/wordpress-install/.htaccess

登录到您的Wordpress管理员后端并保存永久链接设置,它们应该可以正常工作。

答案 2 :(得分:28)

现在已经解决了。我没有启用mod_rewrite。所以我这样做了:

$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
$ service apache2 restart
 * Restarting web server apache2                                                                              

答案 3 :(得分:8)

你想告诉apache关注你的.htaccess文件。您可以通过编辑apache.conf文件

来完成此操作
$sudo nano /etc/apache2/apache.conf

向下滚动到该行 默认情况下,它将是:

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

将AllowOverride的值更改为All,现在变为:

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

按ctrl + x并按y保存配置文件。为了对服务器进行此更改,首先启用mod_rewrite。

$ sudo a2enmod rewrite

然后重启服务器

$ sudo service apache2 restart

完成!

来源:https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/

答案 4 :(得分:6)

使用下面的.htaccess代码,只需将你的项目名称(在www目录中)放在下面的代码中

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project_name/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /project_name/index.php [L]
</IfModule>

# END WordPress

由于

答案 5 :(得分:0)

如果您在ubuntu上 设置新的或克隆的网站 ,请记住对网站配置文件进行符号链接,例如: /etc/apache2/sites-available/your-file.conf/etc/apache2/sites-enabled文件夹,以便apache加载它。


运行:sudo a2ensite your-file.conf,然后sudo service apache2 reload

sudo a2dissite your-file.conf删除符号链接,即禁用配置。

答案 6 :(得分:0)

我面临同样的问题,还有一件事需要寻找。

以下是wordpress永久链接正常工作所需要做的事情:

  1. 确保您在wordpress目录中拥有适当的文件和文件夹权限模式:
    sudo find . -type f -exec chmod 644 {} +
    sudo find . -type d -exec chmod 755 {} +

  2. 对于永久链接结构,请确保在apache中启用mode_rewrite
    sudo a2enmod rewrite
    sudo service apache2 restart

答案 7 :(得分:0)

WAMP用户(Windows):某些版本的WAMP(所有版本?)默认情况下不启用mod_rewrite或允许遵循SymLinks。要启用所需功能,请导航至apache/conf/httpd.conf file,使用文本编辑器打开并取消注释行LoadModule rewrite_module modules/mod_rewrite。所以(即删除行前面的哈希/井号)。然后在同一个文件中进一步向下,有一个部分以第&#34; 选项FollowSymlinks &#34;行开头。从&#34; AllowOverride none&#34;更改该部分中的第二行到AllowOverride all。保存已编辑的httpd.conf并重新启动所有WAMP模块。你的固定链接现在应该可以工作。

For more details, Fixing Permalink Problems

答案 8 :(得分:0)

还有另一种可能性:我刚刚更新了我的macOS,总是搞砸了Apache配置文件。除此之外,我还必须重新启用mod_rewrite模块。找到说明的行

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

并删除散列,如上所述,

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

答案 9 :(得分:0)

还要检查一下这是否描述了您的问题:

  • htaccess和mod_rewrite设置正确
  • 在某些永久链接上出现
  • 404错误,但在其他一些链接上没有

请确保与您的Wordpress安装目录相同的文件夹中没有现有的.php文件或目录,其名称与Wordpress永久链接匹配。

例如,如果您具有以下Wordpress页面永久链接:

 example.com/name_one/
 example.com/name_two/

,包含您的Wordpress安装的目录包括以下文件:

 name_one.php

然后将是结果:

更重要的是,第二个URL 将给出一个404而不是运行name_one.php ,这意味着该问题很难诊断,因为它可以产生与错误编写的.htaccess文件相同的症状。