个性化阅读
专注于IT技术分析

在此服务器上找不到请求的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

#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网站上有一个值得信赖的答案:

我的.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]
语法重写规则

^表示字符串的开头\ \ escapes。否则它将表示任何字符, 并且$表示字符串的结尾。

^ index \ .php $如果http(s)://hostname/index.php-不执行任何操作[END]标志不仅可用于终止当前这一轮的重写处理, 而且可以阻止任何后续的重写处理。


RewriteCond $1 ^(index\.php)?$ [OR]
语法重写条件

在$ 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可以是以下列表中的字符串:

在此处输入图片说明

%{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
赞(0)
未经允许不得转载:srcmini » 在此服务器上找不到请求的URL /about

评论 抢沙发

评论前必须登录!