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

我的 wordpress 网站的主页似乎显示正确,但如果你点击任何其他页面,我得到以下错误消息:

Not Found


The 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 On


SetEnv DEFAULT_PHP_VERSION 53


DirectoryIndex 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
280290 次浏览

这不是一个典型的 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)未能显示或 允许你编辑.htaccess 如果你安装 WordPress 通过 连接安装。

创建和编辑(. htaccess) . htaccess 文件,创建一个 服务器,一个简单的 touch. htaccess 命令将创建该文件 正在使用 FTP 传输文件,在本地计算机上创建文件, 命名为1.htaccess,将它上传到 WordPress 文件夹的根目录, 然后将其重命名为. htaccess。

您可以通过 FTP、 shell 或(可能)您的 主机控制面板。

最简单和最快的方法是在仪表盘 > > 设置 > > 永久链接中重置你的永久链接,并确保。Htaccess 是可写的,所以 WordPress 可以自己编写规则。

并且: 您是否意识到将 index.cgi作为默认文档而不是 index.php调用?这是不对的。移除 index.cgi。或者也可以尝试删除整行,因为可能不需要在服务器上定义默认文档。

Wordpress 网站上有一个值得信赖的答案:

我的.htaccess 文件在哪里?

WordPress 的 index.php 和. htaccess 文件应该放在 网站地址(URL)设置所指示的目录 由于文件名以点开头,因此文件 可能无法通过 FTP 客户端看到,除非您更改 FTP 工具的首选项来显示所有文件,包括隐藏的 一些主机(例如 Godaddy)可能不会显示或允许你编辑 . htaccess 如果你通过 Godaddy 主机安装 WordPress 连接安装。

创建和编辑(. htaccess)

如果你还没有.htaccess 文件,创建一个 Shell 或 ssh 访问服务器,一个简单的 touch. htaccess 命令 将创建文件。如果使用 FTP 传输文件,请创建一个 在您的本地计算机上的文件,调用它1.htaccess,上传到根 你的 WordPress 文件夹,然后重命名为.htaccess。

您可以通过 FTP、 shell 或(可能)您的 主机控制面板。

下面的永久链接重写代码应包含在 . 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

摘自 给你 * 。

我删除了之前的.htaccess 文件,并通过点击 Settings-> Permalinks 中的 Save 按钮创建了一个新文件

现在页面开始正常工作了。

所选择的答案并没有为我解决这个问题。所以对于那些还在为这个问题挠头的人,我找到了另一个解决办法!

在我的 Apache 设置 httpd.conf中(可以通过在控制台中运行 apachectl -V来找到 conf 文件) ,启用了以下模块:

LoadModule rewrite_module modules/mod_rewrite.so

现在网站正如预期的那样运行。

如果以上几点都不起作用。那么试试这个。我试过了。它对我很有效。

  1. 转到 /etc/httpd/conf/httpd.conf
  2. 允许覆写无改为 允许覆盖全部
  3. 重新启动 apache 服务器。

2017年最新消息

对于 Apache 的新版本,该文件称为 Apache2.conf

因此,要访问该文件,请键入 Sudo nano/etc/apache2/apache2.conf并更改代码块 <Directory /var/www >中的对应行

我有同样的问题。我的主页可以访问,但文章只是没有在服务器上找到。

转到 cpanel file manager > public_html并删除 .htaccess

然后在 WordPress 中设置永久链接,将永久链接设置为你想要的,然后保存。中提琴,一切恢复正常。

这个问题发生在我更新 WordPress 之后。

对我来说是这样的:

进入 Wordpress 管理控制面板 > “设置”> “永久链接”> “常见设置”,将单选按钮设置为“自定义结构”并粘贴到文本框中:

/index.php/%year%/%monthnum%/%day%/%postname%/

然后点击保存按钮。

我从这个 链接中得到了这个溶液

对我来说是这样的:

进入 Wordpress 管理控制面板 > “设置”> “永久链接”> “常见设置”,将单选按钮设置为“自定义结构”并粘贴到文本框中:

/index.php/%year%/%monthnum%/%day%/%postname%/

然后点击保存按钮。

仅更改.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

解决了永久链接问题 WordPress 1)登录 wordpress 指示板 > 点击设置 > premalinks > 然后选择文章名。 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>

确保在 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 设置中的虚拟主机设置 如何设置允许覆盖所有

嘿,

虽然晚,如果有人患有类似的问题,这里是你可以做什么,以允许永久链接修改您的虚拟主机文件或无论您是托管您的可湿性粉剂网站。

所以基本上一切工作正常-你设置永久链接发布,突然网址消失。你去了很多论坛(像我一样)尝试了很多修改,得到了“许可服务器403”错误或 URL 没有发现错误。您所要做的就是转到主机文件,例如000-default。如果在启用站点的内部使用默认虚拟主机或配置文件,

在目录部分使用:

<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

这里是 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]

Syntax Rewrite Rule

^表示字符串的开始,\转义为 .,或者表示任何字符,而 $表示字符串的结束。

如果 http (s) ://hostname/Index.php - do nothing [END]标志不仅可以用来终止当前的重写处理,而且可以防止任何后续的重写处理。


RewriteCond $1 ^(index\.php)?$ [OR]

Syntax Rewrite Condition

RewriteCond中,使用 $1作为测试字符串引用从 URL http (s) ://hostname/胡说八道的开始到结束捕获的所有内容。如果在替换或条件中使用,则引用捕获的反向引用。用于 http (s) ://hostname/Bla/ble.phpRewriteRule (bla)/(ble\.php)$ -bla捕获到 $1,将 ble.php捕获到 $2。可以通过 $3..N访问多个捕获组。

( )将几个字符组合成一个单元,?强制匹配可选。 [OR]标志允许您将重写条件与逻辑 OR 关系(相对于默认 AND)组合在一起。

简而言之,如果 胡说八道包含 index.php 或下一个条件


RewriteCond $1 \.(gif|jpg|png|ico|css|js)$ [NC,OR]

( )将几个字符组成单个单元,|将字符分成子组,并对其中任何一个进行条件化。 [NC]标志使 RewriteRule 以不区分大小写的方式进行匹配。

简而言之,如果 胡说八道以任何文件类型或下一个条件结束


RewriteCond %{REQUEST_FILENAME} -f [OR]

服务器变量是形式为% { NAME _ OF _ VARIABLE }的变量,其中 NAME _ OF _ VARIABLE 可以是取自以下列表的字符串:

enter image description here

%{REQUEST_FILENAME}是与请求匹配的文件或脚本的完整本地文件系统路径,如果在引用 REQUEST _ FILENAME 时服务器已经确定了这个路径。否则,例如在虚拟主机上下文中使用与 REQUEST _ URI 相同的值。根据 AcceptPathInfo 的值,服务器可能只使用了 REQUEST _ URI 的一些前导组件来将请求映射到文件。

-f检查常规文件。将测试字符串视为路径名,并测试它是否存在。

简而言之,如果 胡说八道是一个文件或下一个条件


RewriteCond %{REQUEST_FILENAME} -d

-d检查目录。将测试字符串视为路径名,并测试它是否存在。

简而言之,如果 胡说八道是一个目录


RewriteRule ^(.*)$ - [END] not as in Github [S=1]

只有当其中一个条件返回 true 时才执行此语句。

.匹配任何字符 *0次或更多次。

[S]标志用于跳过您不想运行的规则。跳过标志的语法是 [S=N],其中 N表示要跳过的规则数(如果与 RewriteRule 匹配的话)。这可以被看作是重写规则集中的 goto 语句。在下面的示例中,我们只希望在请求的 URI 与实际文件不对应时运行 RewriteRule。

简而言之,什么都不要做


RewriteRule ^ /index.php [L]

[L]标志使 mod _ rewrite 停止处理规则集。在大多数上下文中,这意味着如果规则匹配,则不会处理进一步的规则。这对应于佩尔中的最后一个命令,或者 c 中的 break 命令。使用这个标志来表明应该立即应用当前的规则,而不考虑进一步的规则。

简而言之,将每个路径重写为 http (s) ://hostname/Index.php


我从 apaches.org 文档中获取了这个小文档。

在设置 > permalinks wordpress 设置简单并再次测试。

FWIW: 我从头开始重建了一个 LAMP 服务器并安装了 WordPress。在保存 Permalink 设置以生成。Htaccess 文件。原来 mod _ rewrite 没有启用。我碰到了 这篇关于数字海洋的文章
自由贸易区:

首先,我们需要激活 mod _ rewrite。

$ sudo a2enmod rewrite

这将激活该模块或提醒您该模块已经启用。要使这些更改生效,请重新启动 Apache。

$ sudo systemctl restart apache2

虽然这个问题的解决方案很难在您的再生中编码。事实上,当站点迁移到一些新的服务器上时,它并不能为大多数人所用。

让我们深入到一些基础知识。

让我们假设对于我们大多数人来说,WordPress 环境运行在 PHP 服务器 APACHE 上,该服务器控制着我们环境的大部分初始依赖关系。与此同时。Htaccess 的生成也主要依赖于 Apache 配置。

如果这么说的话。Htaccess 创建冲突主要发生在 WordPress 网站从旧版本的 Apache 和 PHP 上运行 WordPress 环境的服务器迁移到新版本的 PHP 和 Apache 时。

因为 nrwer 和旧版本的依赖关系不同,所以新版本的 Apache2不允许。Htaccess 指令创建一个。因此我们必须手动将 WordPress 网站的根目录权限从“ AllowOverride Nothing”设置为“ AllowOverride All”。

相比之下,AllowOverride 指令用于允许使用。在 web 服务器中进行 htaccess,以允许在每个目录的基础上重写 Apache 配置。

使用以下修复程序更改 apache2.conf 目录权限设置:

如何处理 GCP WordPress 错误“此页面无法工作 example.com 目前无法处理此请求。HTTP 错误500

我在 MacOS 上工作,下面的操作解决了我的问题:

我抄自: Https://akrabat.com/setting-up-php-mysql-on-os-x-10-7-lion/

Cd/etc/apache2

将配置文件的写权限授予 root 用户: 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 Nothing 并更改为 AllowOverride All,这样. htaccess 文件就可以工作了。

更改权限返回: sudo chmod u-w httpd.conf

通过在终端中运行以下命令重新启动 Apache:

重新启动

我使用 http://jafty.com/blog/enable-mod_rewrite-on-apache-ec2-linux-server/确定在升级到 PHP 5.6(从4.9.13)之后,它也升级了 http (Apache) ,我需要编辑/etc/httpd/conf/httpd.conf 文件,我引用..。

基本上,您将在 AllowOverride 中添加 All insted of Nothing 不想编辑主目录配置,则需要编辑 看起来像这样的:

<Directory “/var/www/html”>

不是:

<Directory />

然后使用以下命令重新启动 Apache:

Sudo 服务 httpd 重新启动

注意-在我的疲劳中,我确实改变了一个不同的 Directory 元素,它没有什么不同,所以请确保为/var/www/html 这样做

本文还解释了如何检查 mod-rewrite 是否启用。

在我的 MacOS Catalina 机器上,我发现在 /etc/apache2/users/my-username.conf创建了一个额外的文件,其中默认为

AllowOverride none

把它改成 All终于让我开窍了。Mac 的挑战在于很难用 Finder 访问这些目录,所以很容易找不到这个文件

我找到了一个非常简单的解决办法。

  1. 转到 永久链接 设定
  2. 对 URL 使用 原味的
  3. 保存

现在,WordPress 中的所有页面 URL 都应该能够很好地工作。

你可以将 URL 返回到之前的设置,WordPress 会正确地重新生成 URL。在我的案例中,我选择了 邮寄名称,它工作得很好。