将永久链接更改为“帖子名称”导致找不到页面

问题描述 投票:0回答:10

我有一个

query
fetch
来自自定义帖子类型
device
的所有帖子,我想每页显示 3 个帖子。使用
next
previous
链接,我可以导航到下一页,另外 3 个帖子可以看到。它与默认的
permalink
完美配合,即

  //the default permalink of wordpress
http:mywebsite/?p=123

为了SEO目的,我需要将其更改为

Post name
,如下所示:

http:mywebsite/sample-post/

然后问题突然出现了。

我搜索并阅读了更多博客/文章,但找不到任何有用的建议。我被这个问题困扰了,让我头疼。

顺便说一句,我使用了这个查询:

   <?php
     if (have_posts()) : {
     $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
     query_posts('showposts=3&post_type=advice'.'&paged='.$paged);} ?>

      <ul class="adviceLandingPage">

      <?php while(have_posts()) : the_post(); ?>

       <li>
         <span><?php the_title(); ?></span>
         <span><?php $excerpt = get_the_excerpt(); echo string_limit_words($excerpt,20); ?></span>

       </li>

       <?php endwhile; ?>
          <li class="navigation">
             <?php posts_nav_link(); ?>
          </li>
       </u>
     <?php endif; ?>

谢谢您的任何建议。

编辑:

当我导航到下一页时,我假设会看到接下来的 3 篇文章,这是错误

Page not found

这是将永久链接更改为 %postname% 后的 .htaccess

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

# END WordPress
php apache .htaccess wordpress
10个回答
8
投票

要解决此问题,请执行以下步骤:

  1. 在 Web 服务器上找到
    httpd.conf
    文件
  2. 找到代码
    LoadModule rewrite_module modules / mod_rewrite.so
  3. 去掉前面的
    #
  4. 找到代码
    AllowOverride none
    并转换为
    AllowOverride all

就这么简单又美味:)


7
投票

运行以下命令

注意:

$
不是命令的一部分

$ sudo a2enmod rewrite

$ cd /var/www/html

$ ls -al

$ sudo touch .htaccess

$ sudo nano .htaccess

修改您的

.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

$ sudo chmod 644 .htaccess

$ sudo nano /etc/apache2/sites-available/000-default.conf

确保

AllowOverride All
已设置

<Directory "/var/www/html">
    AllowOverride All
</Directory>

$ sudo /etc/init.d/apache2 restart

有关更多信息,请参阅下面的链接。

https://sachinparmarblog.com/fixing-permalinks-on-wordpress-to-use-postname/


1
投票

另请检查

httpd.conf
文件并确保
AllowOverride
是保存
All
文件的目录的
.htaccess


0
投票

不确定您是否已经解决了这个问题,但通常您需要做的就是刷新数据库,登录到您的网站,转到永久链接,然后进行更改并保存,如果这没有帮助

阅读此内容: http://codex.wordpress.org/Using_Permalinks


0
投票

我找到了解决办法。

进入 WordPress 管理仪表板,转到:

“设置”>“固定链接”>“常用设置”,并将单选按钮设置为“自定义结构”

,然后粘贴到文本框中:

/index.php/%year%/%monthnum%/%day%/%postname%/

,然后单击“保存”按钮。


0
投票

当我没有授予 .htaccess 文件的写入权限时,就会发生这种情况。更改 .htaccess 文件的权限解决了我的问题


0
投票

我在

Settings-> Permalinks
检查
Post name
并复制
.htacces
的内容中解决了这个问题,保存时会显示该内容。访问虚拟主机并修改
.htaccess
并粘贴内容并保存


0
投票

使用 LetsEncrypt 证书更新到 https/SSL 后,我遇到了这种情况。

下面 URL 中的说明有效,但是我必须使用“AllowOverride All”更新 ssl conf 文件,而不是更新 000-default.conf。

/etc/apache2/sites-available/domainname-le-ssl.conf

https://sachinparmarblog.com/fixing-permalinks-on-wordpress-to-use-postname/


0
投票

我只能编辑主页和其他页面,卡在加载页面。我遵循 iagowp 答案,它解决了我的问题。谢谢iagowp!


-1
投票

如果您正在使用 nginx 并且想要将 WordPress 永久链接从普通名称更改为帖子名称,只需将以下行添加到 nginx 文件中

location / {
  try_files $uri $uri/ /index.php?q=$uri&$args;
}

如果您的 WordPress 安装在特定文件夹 example /blog 中,则添加此

location / {
  try_files $uri $uri/ /blog/index.php?q=$uri&$args;
} 
© www.soinside.com 2019 - 2024. All rights reserved.