我正在为我的静态 PHP 网站创建 博客 页面作为 WordPress。当博客页面 URL 更改为 pretty permalink
(example.com/blog/my-post-page
) 时,加载内容(不重定向到 index.php,仅加载内容和URL 将类似于 index.php
(我网站的主页)的 http://example.com/blog/my-post-page ),它位于 blog 文件夹之外,而不是 single.php
内容。
当 permalink 更改为 default
(example.com/blog/?p=123
) 时,它将完美运行。
我需要 URL 作为 http://example.com/blog/my-post-page .
编辑:- 我已将自定义结构的固定链接更新为 /index.php/%postname%/
。但是现在帖子页面显示为 example.com/blog/index.php/my-post-page
。
我认为新的 WordPress 版本提出了这个问题。 (版本 4.2.2)。
从 URL 中删除 index.php
的任何解决方案?
我的目录结构:-
/ - Root
/blog - Blog folder
/blog/wp-content/themes/mytheme/ - Theme folder
/blog/wp-content/themes/mytheme/single.php - Post Single page
/index.php - Home page (Loading contents of this file)
我的 htaccess :-
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
当我删除/重命名根文件夹中的 index.php 时,页面将显示未找到错误。
最佳答案
在 htaccess
中,您可以为 url 重写编写任何正则表达式
在你的情况下
RewriteRule ^/blog/\(.+)$ /blog/index.php?postname=$1
这一行意味着如果 url 以 /blog/
开头,/
之后的任何内容都将作为 /blog/index.php
传递给 postname
参数。
example.com/blog/my-post-page
将被重写为 example.com/blog/index.php?postname=my-post-page
你可以从这个规则中排除任何东西
例如让我们排除这个:/blog/wp-content/themes/mytheme/
它会像这样:
RewriteRule ^(?!/(.+)/(.+)/(.+)/(.+))/blog/\(.+)$ /blog/index.php?postname=$1
关于php - 加载位于博客文件夹外部的 index.php 内容以发布单页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256393/