如何删除url中的index.php?

时间:2013-01-16 作者:stack2013110

我已经在一个子目录中安装了wordpress(blog). 在根目录中,我安装了Magento。现在,文件目录如下所示:

app
downloader
includes
media
....
blog/wp-admin
我的服务器是nginx. 当我在wordpress的永久链接设置中将URL设置为:

http://www.example.com/blog/index.php/sample-post/ 
…所有帖子都可用。现在我要删除index.php 从该URL。我该怎么做?当我将自定义结构设置为…

http://www.example.com/blog/sample-post/
…URL没有被WordPress解析,我得到了404。

3 个回复
SO网友:Christiaan

问题可能与您博客的Nginx中的服务器设置有关。/blog/的位置规则可能错误,特别是try\\u文件。应该是这样的:

location /blog/ {
     try_files $uri $uri/ /index.php$is_args$args;
}
这将告诉Nginx它应该尝试查找请求的资源的顺序。它将首先尝试在URL中找到确切的对象。如果不存在,它将尝试将该对象作为目录查找。如果不存在,它会将请求传递给索引。php以及任何参数或查询字符串(如果存在)。自索引。在WordPress的主处理程序中,这将触发WordPress根据重写规则查找您请求的页面或帖子。

这种配置的优点在于,您现在可以将permalink结构更改为WordPress支持的任何内容,而无需更改Nginx规则。与在Nginx中使用显式重写规则相比,这也是推荐的方法。

SO网友:PrivateUser

将此代码放入functions.php 文件

   add_filter( \'got_rewrite\', \'__return_true\', 999 );
更新:got_mod_rewrite() 函数检查当前服务器是否为apache,是否使用apache_mod_loaded() 作用因为我们使用的是nginx,所以它返回false。所以wordpress添加了索引。url中的php。

通过使用got_rewrite 过滤器我们正在告诉wordpress我们在服务器中进行了重写。

SO网友:Chris H.

将此位置对象添加到nginx中的服务器配置中。形态。

location /blog {
    try_files $uri $uri/ /blog/index.php$is_args$args;
}
然后重新启动nginx。

Wordpress文件夹的符号链接我在我的实现中使用了Wordpress文件夹的符号链接,我发现在尝试访问该符号链接中的真实文件夹时仍然存在一些问题。其中有三个文件夹try_files $uri/ 部分在这里似乎失败了(至少对我来说),所以我最终手动排除了这些文件夹try_files. 如果您有类似的问题,请尝试下面的位置块。

location ~* \\/blog\\/(?!.*(wp-admin|wp-content|wp-includes)).* {
    try_files $uri $uri/ /blog/index.php$is_args$args;
}

结束

相关推荐

W3Nginx的总缓存问题

您好,我在使用nginx的站点上安装了w3 total cache,但我有一些错误。例如,当我启用页面缓存磁盘:增强时,我得到:页面缓存URL重写似乎不起作用。如果使用apache,请验证服务器配置是否允许。htaccess或如果使用nginx,请验证配置中是否包含所有配置文件。选择“页面缓存磁盘:基本”时,不会显示任何错误。以下是/etc/nginx/nginx中服务器的配置。形态:http://pastebin.com/SEdnyHbf如果有什么不同,我安装了多个站点,都在/srv/www中我可以看到