我的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
答案 0 :(得分:45)
如果以上各点都不起作用。然后尝试这个。我尝试过这个。它为我工作。
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)
我找到了一个非常简单的解决方案。
现在,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]
^
表示字符串的开头,\
转义.
或表示任何字符,而$
表示字符串的结尾。
^index\.php$
如果http(s):// hostname / index.php -
不执行任何操作[END]
标志不仅可用于终止当前一轮的重写处理,但阻止任何后续的重写处理。
RewriteCond $1 ^(index\.php)?$ [OR]
在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可以是选自以下列表的字符串:
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目录权限设置:
答案 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