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

时间:2012-10-31 00:09:10

标签: wordpress .htaccess wordpress-theming

我的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

20 个答案:

答案 0 :(得分:45)

如果以上各点都不起作用。然后尝试这个。我尝试过这个。它为我工作。

  1. 转到 /etc/httpd/conf/httpd.conf
  2. AllowOverride 无更改为 AllowOverride All
  3. 重启 apache服务器。
  4. 2017年更新

    对于新版本的apache,该文件名为 apache2.conf

    要访问该文件,请键入 sudo nano /etc/apache2/apache2.conf 并更改块<Directory /var/www >内的对应行

答案 1 :(得分:37)

这不是典型的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)可能不会显示或   如果你通过安装WordPress,允许你编辑.htaccess   Godaddy Hosting Connection安装。

     

创建和编辑(.htaccess)如果您还没有   .htaccess文件,创建一个。如果你有shell或ssh访问权限   服务器,一个简单的触摸.htaccess命令将创建该文件。如果你   正在使用FTP传输文件,在本地计算机上创建文件,   称之为1.htaccess,将其上传到WordPress文件夹的根目录,   然后将其重命名为.htaccess。

     

您可以通过FTP,shell或(可能)编辑.htaccess文件   主持人的控制面板。

最容易和最快速的事情是重置仪表板中的永久链接&gt;&gt;设置&gt;&gt;固定链接并确保.htaccess可写,以便WordPress可以自行编写规则。

并且:您是否知道您将index.cgi作为默认文件而不是index.php?那是错的。删除index.cgi。或者尝试删除整行,因为可能不需要在服务器上定义默认文档。

答案 2 :(得分:9)

这对我有用:

转到Wordpress管理控制台&gt; “设置”&gt; “永久链接”&gt; “常用设置”,将单选按钮设置为“自定义结构”并粘贴到文本框中:

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

并单击“保存”按钮。

我从这个link

获得了这个解决方案

答案 3 :(得分:8)

我删除了之前的.htaccess文件,并通过点击设置 - >固定链接

中的保存按钮创建了新文件

现在页面开始正常工作......

答案 4 :(得分:6)

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

  

我的.htaccess文件在哪里?

     

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

     

创建和编辑(.htaccess)

     

如果您还没有.htaccess文件,请创建一个.htaccess文件。如果你有   shell或ssh访问服务器,一个简单的触摸.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

*取自here

答案 5 :(得分:4)

选择的答案对我来说没有解决这个问题。因此,对于那些仍然对这个问题嗤之以鼻的人,我找到了另一种解决方案!

在我的Apache设置(httpd.conf)中,我启用了以下模块:

LoadModule rewrite_module modules / mod_rewrite.so

现在该网站按预期工作。

答案 6 :(得分:4)

这对我有用:

转到Wordpress管理控制台&gt; “设置”&gt; “永久链接”&gt; “常用设置”,将单选按钮设置为“自定义结构”并粘贴到文本框中:

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

并单击“保存”按钮。

答案 7 :(得分:3)

FWIW:我从头开始重建LAMP服务器并安装了WordPress。保存永久链接设置以生成.htaccess文件后,我遇到了同样的问题。原来没有启用mod_rewrite。我碰到了this post on Digital Ocean
自由贸易协定:

  

首先,我们需要激活mod_rewrite。它可用,但未安装干净的Apache 2。

$ sudo a2enmod rewrite
  

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

$ sudo systemctl restart apache2

答案 8 :(得分:3)

嗨,

虽然很晚但如果有人遇到类似问题,那么你可以通过修改虚拟主机文件或者托管你的WP网站来允许固定链接。

所以基本上一切都运行良好 - 你设置永久链接发布,突然网址消失。你去了很多讨论论坛(像我一样)尝试了很多修改并获得了“服务器403权限”错误或URL未找到错误。您所要做的就是转到主机文件,例如000-default.conf如果使用默认虚拟主机或启用了站点内的配置文件,

在目录部分中使用:

<Directory "path/to/dir">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Donot使用以下内部目录

Order allow,deny
Allow from all

他在 Apache 2.4 中弃用了Order和Allow指令。

同样,您可以在/etc/apache2/apache2.conf中设置目录,为您的路径设置目录,不要使用上述内容 - 这将导致权限403错误。

除此之外,您还需要为apache启用mod_rewrite

答案 9 :(得分:2)

我找到了一个非常简单的解决方案。

  1. 转到永久链接 设置
  2. 使用普通作为URL
  3. 保存按钮

现在,WordPress中的所有页面URL都可以正常工作。

您可以将URL返回到先前的设置,WordPress会正确重新生成URL。我选择帖子名称作为示例,

答案 10 :(得分:1)

这是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 repository的参考文献做了一些修改。 经过过多测试后,该规则无法解决所有问题。我们有一个Wordpress网上商店,该商店有40个插件,并且在某个地方存在重写冲突。我衷心希望下一版的Wordpress不会重写URL。


RewriteRule ^index\.php$ - [L]

Syntax Rewrite Rule

^表示字符串的开头,\转义.或表示任何字符,而$表示字符串的结尾。

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


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

Syntax Rewrite Condition

RewriteCond中使用$1作为测试字符串,它引用了从URL http(s):// hostname / bla / bla的开头到结尾的所有内容的捕获内容。 php 。如果用于替换或条件,则它引用捕获的反向引用。 RewriteRule (bla)/(ble\.php)$ -用于http(s):// hostname / bla / ble.php bla捕获到$1中,将ble.php捕获到{{1}中}。可以通过$2访问多个捕获组。

$3..N将几个字符分组为一个单元,( )强制将match设置为可选。 ?标志可让您将重写条件与逻辑OR关系(而不是默认的AND)结合起来。

简而言之,如果 bla / bla.php 包含index.php或下一个条件


[OR]

RewriteCond $1 \.(gif|jpg|png|ico|css|js)$ [NC,OR] 将几个字符分组为一个单元,( )将字符分成子组,并对其中的任何一个进行条件处理。 |标志使RewriteRule以不区分大小写的方式进行匹配。

简而言之,如果 bla / bla.php 以任何文件类型或下一个条件结尾


[NC]

服务器变量是格式为%{NAME_OF_VARIABLE}的变量,其中NAME_OF_VARIABLE可以是选自以下列表的字符串:

enter image description here

RewriteCond %{REQUEST_FILENAME} -f [OR] 是与请求匹配的文件或脚本的完整本地文件系统路径,如果在引用REQUEST_FILENAME时服务器已经确定了该路径。否则,例如在虚拟主机上下文中使用时,该值与REQUEST_URI相同。根据AcceptPathInfo的值,服务器可能只使用了REQUEST_URI的某些主要组件将请求映射到文件。

%{REQUEST_FILENAME}检查常规文件。将测试字符串视为路径名,并测试其是否存在。

简而言之,如果 bla / bla.php 是文件或下一个条件


-f

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

简而言之,如果 bla / bla.php 是目录


-d

仅当条件之一返回true时才执行此语句。

RewriteRule ^(.*)$ - [END] not as in Github [S=1] 匹配任何字符.零次或多次。

*标志用于跳过您不想运行的规则。跳过标志的语法为[S],其中[S=N]表示要跳过的规则数(前提是RewriteRule匹配)。可以将其视为重写规则集中的goto语句。在下面的示例中,我们只希望在请求的URI与实际文件不匹配的情况下运行RewriteRule。

简而言之,什么都不做


N

RewriteRule ^ /index.php [L] 标志使mod_rewrite停止处理规则集。在大多数情况下,这意味着如果规则匹配,将不再处理其他规则。这对应于Perl中的最后一个命令,或C中的break命令。使用此标志指示应立即应用当前规则,而无需考虑其他规则。

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


我从apaches.org文档中一起获取了这个小文档。下面的链接。

答案 11 :(得分:1)

在设置中>永久设置wordpress设置简单,然后再次测试。

答案 12 :(得分:1)

尽管在重新生成.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目录权限设置:

How to deal with GCP WordPress error "This page isn’t working example.com is currently unable to handle this request. HTTP ERROR 500

答案 13 :(得分:0)

确保在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设置中更正虚拟主机设置 How to Set AllowOverride all

答案 14 :(得分:0)

**解决永久链接问题Wordpress ** 1)登录wordpress仪表板&gt;点击设置&gt; premalink&gt;然后选择帖子名称。 2)登录托管服务器后转到.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 :(得分:0)

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

我从复制: https://akrabat.com/setting-up-php-mysql-on-os-x-10-7-lion/

cd / etc / apache2

将配置文件授予写权限到根目录:sudo chmod u + w httpd.conf 须藤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重新启动

答案 16 :(得分:0)

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

基本上,您会将“无所有插入”添加到AllowOverride中, 不想编辑主目录配置,要编辑 看起来像这样的

<Directory “/var/www/html”>

否:

<Directory />

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

sudo服务httpd重新启动

注意-很累,我确实更改了一个不同的Directory元素,并且没有什么区别,因此请确保您针对/ var / www / html

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

答案 17 :(得分:0)

在我的MacOS Catalina计算机上,我发现在/etc/apache2/users/my-username.conf处创建了一个附加文件,默认位置为

AllowOverride none

将其更改为All终于使事情对我有用。 Mac面临的挑战是,很难通过Finder进入这些目录,因此很容易不发现该文件

答案 18 :(得分:0)

我遇到了同样的问题。可以访问我的主页,但是在服务器上找不到该文章。

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

然后转到WordPress中的永久链接设置,将永久链接设置为您想要的任何内容,然后保存。中提琴恢复正常。

更新WordPress后发生此问题。

答案 19 :(得分:-1)

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