Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress&x2B;修改_Php_Wordpress_Mod Rewrite - Fatal编程技术网

Php WordPress&x2B;修改

Php WordPress&x2B;修改,php,wordpress,mod-rewrite,Php,Wordpress,Mod Rewrite,我使用Wordpress作为CMS,其中首页大部分是静态的,而实际的博客部分已经移动到一个新页面,该页面使用自定义页面模板,基本上就像是标准Wordpress安装的首页一样。它工作得很好,但仍然有一些bug。主要的一点是分页将不再有效,Wordpress将无法识别生成的页面URL 到目前为止,我已经将Wordpress配置为显示正确的URL(domain.com/blog/page/2而不是domain.com/page/2),并且我还通过URL参数(domain.com/blog?page=N

我使用Wordpress作为CMS,其中首页大部分是静态的,而实际的博客部分已经移动到一个新页面,该页面使用自定义页面模板,基本上就像是标准Wordpress安装的首页一样。它工作得很好,但仍然有一些bug。主要的一点是分页将不再有效,Wordpress将无法识别生成的页面URL

到目前为止,我已经将Wordpress配置为显示正确的URL(domain.com/blog/page/2而不是domain.com/page/2),并且我还通过URL参数(domain.com/blog?page=N)让它显示博客文章的特定页面。所以基本上我差不多完成了,我只需要将domain.com/blog/page/N映射到domain.com/blog?page=N。如果它只是一个普通的静态站点,这将是一个简单的任务,但Wordpress有自己的URL处理,我相信可能会干扰它-更不用说“blog”不是一个实际的URL,所以它需要通过两次规则,一次是为了映射博客分页,另一次是为了让Wordpress能够像处理常规URL一样处理生成的URL。。。我想我可能需要为重写规则使用N或NS标志,但我不知道如何使用它们

我提出的规则是:

RewriteRule ^/blog/page/([0-9]+)$ /blog?page=$1
默认Wordpress.htaccess:

RewriteEngine On  
RewriteBase /  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]  
根据一些建议,我为.htaccess获得了这个,但它仍然无法识别它

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /blog/page/([0-9]+)$ /blog?page=$1 [N,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

重新启动发动机
重写规则/blog/page/([0-9]+)$/blog?page=$1[N,QSA]
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
我相当肯定通过URL参数更改页面确实有效-我手动更改URL中的数字,事实上它确实更改了页面。web服务器是LiteSpeed,如果这有什么不同,请尝试以下方法

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule /blog/page/([0-9]+)$ /blog?page=$1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

重新启动发动机
重写基/
重写规则/blog/page/([0-9]+)$/blog?page=$1[R=301]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
或尝试

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/page/([0-9]+)$ /blog?page=$1 [NC,N]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [NC,L]
</IfModule>

重新启动发动机
重写规则^blog/page/([0-9]+)$/blog?page=$1[NC,N]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[NC,L]

NC使其不区分大小写,N使其重新应用规则,L停止规则处理。

我最终找到了答案(几天后——我只是忘记了这一点,直到现在)。首先,确保更新了Wordpress。当时我使用的是2.5或2.6,但由于某种原因,直到我更新它才起作用

首先,创建一个自定义模板。你将在你的主页上使用这个模板,所以定制它和所有的jazz。不要使用“主索引”(Index.php)模板——该模板将用于博客索引页面,因此它需要WP循环来列出您的博客文章

现在,开始创建两个页面。一个用于主页(我们称之为“主页”),另一个用于博客(我们称之为“博客”)。在“主页”页面上,将模板设置为先前创建的主页模板。在博客页面上,将其保留在默认模板上——默认情况下,它将使用“主索引”模板

现在,进入“阅读”设置并将其更改为“静态页面”。对于首页,选择您先前创建的“主页”。对于帖子页面,选择您创建的“博客”页面

应该是这样。事实上,我事先已经尝试过了,但它不起作用,所以我尝试使用重定向规则,但没有效果。我最终成为一个过时的WP安装。如果您安装了sitemap mod,请确保排除“主页”,这样爬行器就不会在example.com/home上找到与您的主页重复的内容。你也可以把它放在你的robots.txt里


完成后,域的根目录(example.com/)将指向您的“主页”(假设您在那里安装了WP)。您的博客页面(example.com/blog)将列出您的帖子。分页将按预期工作(例如:example.com/blog/page/2等)。

/blog/不是一个文件夹,它是一个Wordpress页面(通过Wordpress后端创建,存储在数据库中)。您好,感谢您的帮助:-)我尝试在“RewriteEngine On”之前放置“RewriteRule^/blog/page/([0-9]+)$/blog?page=$1[N,QSA]”,但它仍然无法识别URL(返回404错误)wordpress是否真的识别/blog?page=X?事实上,对不起,我把它放在后面(不知道为什么我之前这么说),但由于某种原因它仍然不起作用。(我将编辑我的原始问题,以便您可以看到我有什么)wordpress是否识别/blog?page=X?谢谢,但不幸的是它没有起作用:(这对我来说很有意义,所以我不知道为什么它不工作——可能是速度有问题.)。。