在此服务器上找不到请求的URL /about

我的wordpress网站的主页似乎正确显示, 但是如果你单击进入其他任何页面, 则会收到以下错误消息:

Not FoundThe requested URL /about was not found on this server.Apache/2 Server at www.wildlionmedia.co.uk Port 80

我不确定是否是主题或.htaccess文件没有正确重写的问题。
http://www.wildlionmedia.co.uk/
有什么想法可以解决这个问题吗?
# Switch rewrite engine off in case this was installed under HostPay. RewriteEngine OnSetEnv DEFAULT_PHP_VERSION 53DirectoryIndex index.cgi index.php# BEGIN WordPress < IfModule mod_rewrite.c> RewriteEngine Off RewriteBase /wildlionmedia.co.uk/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wildlionmedia.co.uk/index.php [L] < /IfModule> # END WordPress

#1 那不是典型的Wordpress重写块。这是:
# 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

参见http://codex.wordpress.org/Using_Permalinks#Where.27s_my_.htaccess_file.3F
我的.htaccess文件在哪里? WordPress的index.php和.htaccess文件应放在” 常规选项” 页面上” 站点地址(URL)” 设置所指示的目录中。由于文件名以点开头, 因此除非通过更改FTP工具的首选项以显示所有文件(包括隐藏文件), 否则FTP客户端可能看不到该文件。如果你通过Godaddy Hosting Connection安装来安装WordPress, 则某些主机(例如Godaddy)可能不会显示或不允许你编辑.htaccess。创建和编辑(.htaccess)如果你还没有.htaccess文件, 请创建一个。如果你具有对服务器的shell或ssh访问权限, 则可以通过简单的touch .htaccess命令创建该文件。如果使用FTP传输文件, 请在本地计算机上创建一个文件, 将其命名为1.htaccess, 将其上传到WordPress文件夹的根目录, 然后将其重命名为.htaccess。你可以通过FTP, shell或(可能是)主机控制面板来编辑.htaccess文件。
最简单, 最快的方法是重置仪表板> > 设置> > 永久链接中的永久链接, 并确保.htaccess可写, 以便WordPress可以自己编写规则。
并且:你是否知道将index.cgi称为默认文档而不是index.php?错了删除index.cgi。或者也尝试删除整行, 因为可能不需要在服务器上定义默认文档。
#2 如果以上所有点都不起作用。然后尝试这个。我尝试过这个。它为我工作。
  1. 转到/etc/httpd/conf/httpd.conf。
  2. 将AllowOverride None更改为AllowOverride All。
  3. 重新启动apache服务器。
更新2017
对于新版本的apache, 该文件称为apache2.conf。
因此, 要访问该文件, 请键入sudo nano /etc/apache2/apache2.conf并更改< Directory / var / www> 块中的对应行。
#3 它对我来说是这样的:
转到” WordPress管理控制台” > ” 设置” > ” 固定链接” > ” 通用设置” , 将单选按钮设置为” 自定义结构” , 然后粘贴到文本框中:
/index.php/%year%/%monthnum%/%day%/%postname%/

然后单击” 保存” 按钮。
我从这个链接得到了这个解决方案
#4 WordPress网站上有一个值得信赖的答案:
【在此服务器上找不到请求的URL /about】我的.htaccess文件在哪里? WordPress的index.php和.htaccess文件应放在” 常规选项” 页面上” 站点地址(URL)” 设置所指示的目录中。由于文件名以点开头, 因此除非通过更改FTP工具的首选项以显示所有文件(包括隐藏文件), 否则FTP客户端可能看不到该文件。如果你通过Godaddy Hosting Connection安装WordPress, 则某些主机(例如Godaddy)可能不会显示或不允许你编辑.htaccess。创建和编辑(.htaccess)如果你还没有.htaccess文件, 请创建一个。如果你具有对服务器的shell或ssh访问权限, 则可以通过简单的touch .htaccess命令创建该文件。如果使用FTP传输文件, 请在本地计算机上创建一个文件, 将其命名为1.htaccess, 将其上传到WordPress文件夹的根目录, 然后将其重命名为.htaccess。你可以通过FTP, shell或(可能是)主机控制面板来编辑.htaccess文件。你的.htaccess文件中应包含以下永久链接重写代码(自WordPress 3.0起):
# 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

*来自这里。
#5 我删除了以前的.htaccess文件, 并通过单击” 设置” -> ” 永久链接” 中的” 保存” 按钮创建了一个新文件。
现在页面开始正常工作了…
#6 选择的答案对我来说没有解决此问题。因此, 对于那些仍在摸索的人, 我找到了另一种解决方案!
在我的Apache设置httpd.conf中(你可以通过在控制台中运行apachectl -V找到conf文件), 启用了以下模块:
LoadModule rewrite_module模块/mod_rewrite.so
现在该站点可以按预期运行。
#7 它对我来说是这样的:
转到” WordPress管理控制台” > ” 设置” > ” 固定链接” > ” 通用设置” , 将单选按钮设置为” 自定义结构” , 然后粘贴到文本框中:
/index.php/%year%/%monthnum%/%day%/%postname%/

然后单击” 保存” 按钮。
#8 喂
虽然很晚如果有人遇到类似问题, 你可以通过修改虚拟主机文件或任何托管WP站点的方式来允许永久链接。
因此, 基本上一切都正常-你设置了永久链接来发布, 但网址突然消失了。你去了很多讨论论坛(如我)尝试了很多修改, 并收到” 服务器403权限” 错误或未找到URL错误。你需要做的就是转到主机文件, 例如000-default.conf(如果使用默认虚拟主机)或配置为启用站点的配置文件,
在目录部分使用:
< Directory "path/to/dir"> Options Indexes FollowSymLinks AllowOverride All Require all granted < /Directory>

不要在目录内部使用以下内容
Order allow, deny Allow from all

在Apache 2.4中不推荐使用Order和Allow指令。
同样, 你可以在/etc/apache2/apache2.conf中设置目录, 为你的路径设置目录, 并且不要使用上面的目录-这将导致权限403错误。
除此之外, 你还需要为Apache启用mod_rewrite
#9 FWIW:我从头开始重建LAMP服务器并安装了WordPress。保存永久链接设置以生成.htaccess文件后, 我遇到了同样的问题。原来没有启用mod_rewrite。我在Digital Ocean上看到了这篇文章。
自由贸易协定:
首先, 我们需要激活mod_rewrite。它可用, 但未安装全新的Apache 2安装。
$ sudo a2enmod rewrite

这将激活模块或警告你该模块已被启用。要使这些更改生效, 请重新启动Apache。
$ sudo systemctl restart apache2

#10 这是Wordpress的另一个版本, 原始版本未按预期工作。
# BEGIN WordPress < IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^index\.php$ - [END] RewriteCond $1 ^(index\.php)?$ [OR] RewriteCond $1 \.(gif|jpg|png|ico|css|js)$ [NC, OR] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ - [END] RewriteRule ^ /index.php [L] < /IfModule> # END WordPress

来自这个Github存储库的参考, 做了一些修改。经过过多测试后, 此规则无法解决所有问题。我们有一个Wordpress网上商店, 其中有40个插件, 并且某个地方存在重写冲突。我衷心希望下一版的Wordpress不会重写URL。
RewriteRule ^index\.php$ - [L]

在此服务器上找不到请求的URL /about

文章图片
^表示字符串的开头\ \ escapes。否则它将表示任何字符, 并且$表示字符串的结尾。
^ index \ .php $如果http(s)://hostname/index.php-不执行任何操作[END]标志不仅可用于终止当前这一轮的重写处理, 而且可以阻止任何后续的重写处理。
RewriteCond $1 ^(index\.php)?$ [OR]

在此服务器上找不到请求的URL /about

文章图片
在$ 1作为测试字符串的RewriteCond中, 引用的内容是从URL http(s)://hostname/bla/bla.php的开头到结尾的所有内容。如果用于替换或条件, 则它引用捕获的反向引用。 RewriteRule(bla)/(ble \ .php)$-对于http(s)://hostname/bla/ble.php将bla捕获为$ 1, 并将ble.php捕获为$ 2。可以通过$ 3..N访问多个捕获组。
()将几个字符分为一个单元, 强制匹配为可选。 [OR]标志允许你将重写条件与逻辑OR关系(而不是默认的AND)组合在一起。
简而言之, 如果bla / bla.php包含index.php或下一个条件
RewriteCond $1 \.(gif|jpg|png|ico|css|js)$ [NC, OR]

()将几个字符分为一个单元, |将字符分隔为子组并对其进行条件处理(如果有)。 [NC]标志使RewriteRule以不区分大小写的方式进行匹配。
简而言之, 如果bla / bla.php以任何文件类型或下一个条件结尾
RewriteCond %{REQUEST_FILENAME} -f [OR]

服务器变量是格式为%{NAME_OF_VARIABLE}的变量, 其中NAME_OF_VARIABLE可以是以下列表中的字符串:
在此服务器上找不到请求的URL /about

文章图片
%{REQUEST_FILENAME}是与请求匹配的文件或脚本的完整本地文件系统路径, 如果在引用REQUEST_FILENAME时服务器已经确定了该路径。否则, 例如在虚拟主机上下文中使用时, 该值与REQUEST_URI相同。根据AcceptPathInfo的值, 服务器可能只使用了REQUEST_URI的某些主要组件将请求映射到文件。
-f检查常规文件。将测试字符串视为路径名并测试它是否存在。
简而言之, 如果bla / bla.php是文件或下一个条件
RewriteCond %{REQUEST_FILENAME} -d

-d检查目录。将测试字符串视为路径名并测试它是否存在。
简而言之, 如果bla / bla.php是目录
RewriteRule ^(.*)$ - [END] not as in Github [S=1]

仅当条件之一返回true时才执行此语句。
。匹配任何字符*零次或多次。
[S]标志用于跳过你不想运行的规则。跳过标志的语法为[S = N], 其中N表示要跳过的规则数(前提是RewriteRule匹配)。可以将其视为重写规则集中的goto语句。在以下示例中, 我们仅想在请求的URI与实际文件不对应的情况下运行RewriteRule。
简而言之, 什么都不做
RewriteRule ^ /index.php [L]

[L]标志使mod_rewrite停止处理规则集。在大多数情况下, 这意味着如果规则匹配, 将不再处理其他规则。这对应于Perl中的最后一个命令, 或C中的break命令。使用此标志指示应立即应用当前规则, 而不考虑其他规则。
简而言之, 将每个路径都重写为http(s)://hostname/index.php
我从apaches.org文档中一起获取了这个小文档。下面的链接。
  • Apache mod_rewrite简介
  • Apache模块mod_rewrite
  • Apache mod_rewrite RewriteRule标志
#11 在设置> 固定的wordpress设置简单, 然后再次测试。
#12 尽管几乎没有在重新生成.htaccess文件时编写此问题的解决方案;但是, 确实, 当站点迁移到一些新服务器时, 它不适用于大多数人。
让我们深入一些基础知识。
让我们假设对于我们大多数人来说, WordPress环境运行在PHP服务器APACHE上, 该服务器控制着我们环境中大多数初始依赖项。同时, .htaccess的生成也主要取决于Apache配置。
因此, 可以这样说, .htaccess创建冲突的原因主要是将WordPress网站从在旧版本的Apache和PHP上运行WordPress环境的服务器迁移到新版本的PHP和Apache时发生的。
因为nrwer和较早版本的依赖性不同, 所以Apache2的较新版本默认不允许.htaccess指令创建.htaccess文件。因此, 我们必须手动将WordPress网站的根目录权限从” AllowOverride None” 设置为” AllowOverride All” 。
相比之下, AllowOverride指令用于允许在Web服务器中使用.htaccess, 以允许基于每个目录覆盖Apache配置。
使用以下修复程序来更改apache2.conf目录权限设置:
如何处理GCP WordPress错误” 此页面无法正常运行, example.com当前无法处理此请求。HTTP错误500
#13 我有同样的问题。可以访问我的主页, 但是在服务器上找不到该文章。
转到cpanel文件管理器> public_html并删除.htaccess。
然后转到WordPress中的永久链接设置, 将永久链接设置为所需的内容, 然后保存。中提琴一切恢复正常。
我更新WordPress后发生此问题。
#14 **已解决的永久链接问题Wordpress ** 1)登录到wordpress仪表板> 单击设置> 预链接> 然后选择帖子名称。 2)之后, 登录到你的托管服务器goto .htaccess文件并替换代码。
< IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] < /IfModule>

#15 确保在APACHE设置中启用了mode_rewrite。在此处查看链接https://github.com/h5bp/server-configs-apache/wiki/How-to-enable-Apache-modules
然后确保你具有正确的.htaccess https://wordpress.org/support/topic/404-errors-with-permalinks-set-to-postname/
并在任一Apache设置中纠正虚拟主机设置如何设置AllowOverride all
#16 我正在MacOS上工作, 以下操作解决了我的问题:
我复制自:https://akrabat.com/setting-up-php-mysql-on-os-x-10-7-lion/
cd / etc / apache2
将配置文件授予写权限到根目录:sudo chmod u + w httpd.conf sudo vim httpd.conf
找到#LoadModule php5_module libexec / apache2 / libphp5.so
并删除开头的#
找到#LoadModule rewrite_module libexec / apache2 / mod_rewrite.so
并删除开头的#
在该部分中找到” AllowOverride None” , 然后将其更改为” AllowOverride All” , 以便.htaccess文件可以使用。
改回权限:sudo chmod u-w httpd.conf
通过在终端中运行以下命令来重新启动Apache:
sudo apachectl重新启动
#17 仅更改.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

    推荐阅读