将固定链接更改为“Postname”会导致找不到页面

时间:2014-08-15 07:54:58

标签: php apache .htaccess wordpress

我在自定义帖子类型query中发布了fetchdevice个帖子,我希望每页显示3个帖子。使用nextprevious链接,我可以浏览下一页,其他3个帖子可以看到。它与默认的permalink

完美配合
  //the default permalink of wordpress
http:mywebsite/?p=123

我需要将其更改为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; ?>

感谢您的任何建议。

修改:

当我导航到下一页时,我假设看到下一个帖子,这是错误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

9 个答案:

答案 0 :(得分:7)

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

  1. 在Web服务器上找到httpd.conf文件
  2. 找到代码LoadModule rewrite_module modules / mod_rewrite.so
  3. 删除前面的#
  4. 找到代码AllowOverride none并转换为AllowOverride all
  5. 它就像美味一样简单:)

答案 1 :(得分:2)

运行以下命令

注意:$不是命令的一部分

$ sudo a2enmod rewrite

$ cd /var/www/html

$ ls -al

$ sudo touch .htacess

$ sudo nano .htacess

修改您的.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/

答案 2 :(得分:1)

我找到了解决办法。

进入WordPress管理信息中心,转到:

“设置”&gt; “永久链接”&gt; “常用设置”,并将单选按钮设置为“自定义结构”

,然后粘贴到文本框中:

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

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

答案 3 :(得分:1)

同时检查httpd.conf文件并确保AllowOverrideAll,以保存包含.htaccess文件的目录

答案 4 :(得分:0)

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

读到这个: http://codex.wordpress.org/Using_Permalinks

答案 5 :(得分:0)

当我不授予对.htaccess文件的写访问权时,这会发生在我身上。更改.htaccess文件的权限解决了我的问题

答案 6 :(得分:0)

我通过Settings-> Permalinks检查Post name并复制.htacces的内容(保存时显示)解决了该问题。访问网络托管并修改.htaccess,然后粘贴内容并保存

答案 7 :(得分:0)

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

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

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

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

答案 8 :(得分:-1)

如果您使用的是nginx,并且要将wordpress的永久链接从纯文本更改为帖子名称,只需将以下行添加到nginx文件中

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

,如果您的wordpress已安装在特定的文件夹示例/ blog中,则添加此

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