wordpress permalinks不工作-htaccess似乎正常,但页面上出现404错误

wordpress permalinks不工作-htaccess似乎正常,但页面上出现404错误,wordpress,permalinks,Wordpress,Permalinks,我将permalink结构更新为/%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

我将permalink结构更新为/%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

这个问题现在已经解决了。我没有启用mod_重写。所以我这样做了:

$ 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                                                                              

使用下面的.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
#开始WordPress
重新启动发动机
重写基础/项目名称/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/项目名称/index.php[L]
#结束WordPress

感谢登录此页面的其他人-

另一个问题可能是(如果您使用Apache作为web服务器),您的httpd.conf或您的sites available/sitename.conf文件需要编辑

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

在文件中查找您的web目录-它将在conf文件的大部分中,或者被隔离到VirtualHost部分中

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

     #other settings ---

</Directory>

#添加以下设置以允许web目录中的.htaccess正常工作
AllowOverride文件信息
#其他设置---
这将允许您在WordPress中设置您想要的WordPress URL


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

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

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

sudo a2enmod rewrite
sudo service apache2 restart
您可能还需要修改apache2.conf文件

sudo nano /etc/apache2/apache2.conf
将web目录覆盖规则更改为AllowOverride All

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

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

如果您在ubuntu上设置新的或克隆的站点,记住将站点配置文件(例如
/etc/apache2/sites available/your file.conf
符号链接到
/etc/apache2/sites enabled
文件夹,以便apache加载它


只需运行:
sudo a2ensite您的文件.conf
,然后
sudo服务apache2重新加载


sudo a2更改您的文件.conf
以删除符号链接,即禁用配置。

我遇到了同样的问题,还有一件事要找

要使wordpress永久链接正常工作,您需要执行以下操作:

  • 确保您对wordpress目录中的文件和文件夹具有正确的权限模式:
    sudo-find-类型f-exec chmod 644{}+

    sudo-find-d型-exec chmod 755{}+

  • 对于permalink结构,请确保在apache中启用了“重写模式”:
    sudo a2enmod重写

    sudo服务apache2重启

  • WAMP用户(Windows):WAMP的某些版本(所有版本?)默认情况下不启用mod_rewrite或允许以下符号链接。要启用所需功能,请导航到
    apache/conf/httpd.conf文件
    ,使用文本编辑器打开并取消注释行
    LoadModule rewrite\u module modules/mod\u rewrite
    。因此(即删除行前面的哈希/磅符号)。然后,在同一个文件的下一步,有一个以“选项之后的ymlinks行开始的部分。将该部分的第二行从“
    AllowOverride none
    ”更改为
    AllowOverride all
    。保存已编辑的httpd.conf并重新启动所有WAMP模块。你的永久链接现在应该可以工作了


    还有一种可能性:我刚刚更新了macOS,它总是会破坏Apache配置文件。除此之外,我还必须重新启用
    mod_rewrite
    模块。找到那句话,上面写着

    #LoadModule rewrite_module libexec/apache2/mod_rewrite.so
    
    然后删除散列,让它显示

    LoadModule rewrite_module libexec/apache2/mod_rewrite.so
    

    您需要告诉apache遵循您的.htaccess文件。您可以通过编辑apache.conf文件来实现这一点

    $sudo nano /etc/apache2/apache.conf
    
    向下滚动到该行 默认情况下,它将是:

    <Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>
    
    然后重新启动服务器

    $ sudo service apache2 restart
    
    完成了


    来源:

    还有一件事需要检查,这是否描述了您的问题:

    • htaccess和mod_rewrite设置正确
    • 404在某些永久链接上出错,但在其他永久链接上没有错误
    确保与Wordpress安装相同的文件夹中没有名称与Wordpress permalink匹配的现有.php文件或目录

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

     example.com/name_one/
     example.com/name_two/
    
    包含Wordpress安装的目录包括以下文件:

     name_one.php
    
    那么结果就是:

    • –此永久链接将起作用
    • –此永久链接将不起作用

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

    这部分是正确的
    AllowOverride FileInfo
    通常就足够了,请参阅。你应该始终为最少特权的原则而努力。谢谢MTLHD777-这也帮助了我。谢谢。。这帮助我用vagrant配置wordpress。谢谢MTLHD777,它现在可以工作了!但在我的例子中,插入“AllowOverride FileInfo”设置的文件不是/etc/apache2/httpd.conf,而是/etc/apache2/sites available/default。这正好节省了我的时间!事实上,这解决了我的问题。我认为AllowOverride是一个问题。谢谢你…我错过了同样的事情:):)在我的情况下,这个和
    AllowOverride文件信息
    是它工作所必需的。也许你应该接受一个答案。查看这篇文章了解你的问题。道具非常完整的答案!为了未来的自己,我不得不记录下我所经历的疯狂!在我的例子中,
    AllowOverride All
    子句失败了。这个答案很有帮助
    <Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    </Directory>
    
    $ sudo a2enmod rewrite
    
    $ sudo service apache2 restart
    
     example.com/name_one/
     example.com/name_two/
    
     name_one.php