.htaccess RewriteRule不能在Wordpress上运行

时间:2017-09-26 02:26:15

标签: php wordpress apache .htaccess mod-rewrite

一位客户要我用WordPress建立一个网站。我不是很擅长WordPress,所以解决方案可能已经在这里,但我已经阅读了十几个SO问题并且尚未找到答案,所以我想我和我#39;发布我自己的。

这是我的.htaccess文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^podcast/([^/]+)$ /podcast?slug=$1 [QSA,L] #I added this

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

使用我这样的文件,它会将我重定向到我的404页面。即使网址正确(/podcast/word),浏览器控制台也会说它是404。

然后我假设我添加了一个&#34; R = 301&#34;旗帜,它会解决这个问题。但如果我这样做:

RewriteRule ^podcast/([^/]+)$ /podcast?slug=$1 [R=301,QSA,L]

然后我的浏览器就转到/podcast?slug=word

我不确定这是由我的.htaccess引起的,还是由WordPress 404文件引起的。如果有人想看到它,我的404.php文件是:

<?php get_header();  ?>

<section class="white">
    <div class="wrapper internal">
       <!--generic error message-->
    </div>
</section>

<?php get_footer(); ?>    

我的.htaccess文件在使用Wolf CMS时运行正常,但在WordPress中运行不正常。因为我还在学习WordPress,所以非常感谢任何帮助。

修改

我使用slug引用RSS源中的播客。我希望将http://example.com/podcast/?slug=example-podcast转换为http://example.com/podcast/example-podcast,但每当我这样做时,我都会获得404.

3 个答案:

答案 0 :(得分:0)

尝试使用此代码替换.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

答案 1 :(得分:0)

示例:如果我将一个名为'a'的文件夹中的wordpress作为子目录,那么我将像这样编辑我的.htaccess

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

# END WordPress

答案 2 :(得分:0)

您也可以将永久链接设置为帖子名称。如果您的网址是由帖子名称而不是php类型的网址定义,这将解决此问题。