【发布时间】:2017-09-26 13:23:31
【问题描述】:
一位客户要求我用 WordPress 为他们建立一个网站。我不太擅长 WordPress,所以解决方案可能已经在这里了,但是我已经阅读了大约十几个 SO 问题并且还没有找到答案,所以我想我会发布我自己的。
这是我的 .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 页面。即使 URL 是正确的 (/podcast/word),浏览器控制台也会显示它是 404。
然后我假设如果我添加一个“R=301”标志,它会解决这个问题。但如果我这样做:
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。
【问题讨论】:
-
让 Wordpress 完成这项工作。登录到管理页面。选择设置,然后选择永久链接。选择您想要使用或创建您拥有的选项。
-
@jeff 我认为我没有正确解释自己。我在问题中添加了一些附加信息。蛞蝓不是实际站点的一部分。我用它来引用外部资源。
-
您的 wordpress 设置是什么样的?管理目录是否在子目录中,但站点在主目录中(因此站点将位于 / 但所有 wp 文件都位于 /wordpress 中)?还是所有东西都在同一个文件夹中?
-
另外,你可以在这里测试你的正则表达式:regex101.com - 你能确保它们正常工作吗? (只要确保当你在那里测试时,你转义 / 字符 - 实际上我不知道你是否必须为 htaccess 转义 [^/] 部分中的 /)。
-
为此使用 WP rewrite API 而不是 .htaccess。
标签: php wordpress apache .htaccess mod-rewrite