wordpress permalinks不工作-htaccess似乎正常,但页面上出现404错误
我将permalink结构更新为/%postname%/,并将我的.htaccess更新为:wordpress permalinks不工作-htaccess似乎正常,但页面上出现404错误,wordpress,permalinks,Wordpress,Permalinks,我将permalink结构更新为/%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
# 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
这个问题现在已经解决了。我没有启用mod_重写。所以我这样做了:
$ sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
$ service apache2 restart
* Restarting web server apache2
使用下面的.htaccess代码,只需在下面的代码中输入您的项目名称(位于www目录中)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project_name/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /project_name/index.php [L]
</IfModule>
# END WordPress
#开始WordPress
重新启动发动机
重写基础/项目名称/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/项目名称/index.php[L]
#结束WordPress
感谢登录此页面的其他人- 另一个问题可能是(如果您使用Apache作为web服务器),您的httpd.conf或您的sites available/sitename.conf文件需要编辑 您的web目录需要允许.htaccess文件覆盖其设置 在文件中查找您的web目录-它将在conf文件的大部分中,或者被隔离到VirtualHost部分中
<Directory /path/to/site>
#add the following setting to allow .htaccess in your web dir to work
AllowOverride FileInfo
#other settings ---
</Directory>
#添加以下设置以允许web目录中的.htaccess正常工作
AllowOverride文件信息
#其他设置---
这将允许您在WordPress中设置您想要的WordPress URL
***编辑-谢谢你的更新。首先使用最少的权限。如果这不起作用,则将
AllowOverride FileInfo
替换为AllowOverride All
可能有多种因素阻止重写规则起作用。我的ubuntu服务器需要改变3件事才能让永久链接正常工作
在较新版本的apache2中,您需要启用以下模块:
sudo a2enmod rewrite
sudo service apache2 restart
您可能还需要修改apache2.conf文件
sudo nano /etc/apache2/apache2.conf
将web目录覆盖规则更改为AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
或
登录到Wordpress管理后端并保存永久链接设置,它们应该可以正常工作。如果您在ubuntu上设置新的或克隆的站点,记住将站点配置文件(例如/etc/apache2/sites available/your file.conf
符号链接到/etc/apache2/sites enabled
文件夹,以便apache加载它
只需运行:
sudo a2ensite您的文件.conf
,然后sudo服务apache2重新加载
sudo a2更改您的文件.conf
以删除符号链接,即禁用配置。我遇到了同样的问题,还有一件事要找
要使wordpress永久链接正常工作,您需要执行以下操作:
sudo-find-类型f-exec chmod 644{}+
sudo-find-d型-exec chmod 755{}+
sudo a2enmod重写
sudo服务apache2重启
apache/conf/httpd.conf文件
,使用文本编辑器打开并取消注释行LoadModule rewrite\u module modules/mod\u rewrite
。因此(即删除行前面的哈希/磅符号)。然后,在同一个文件的下一步,有一个以“选项之后的ymlinks行开始的部分。将该部分的第二行从“AllowOverride none
”更改为AllowOverride all
。保存已编辑的httpd.conf并重新启动所有WAMP模块。你的永久链接现在应该可以工作了
还有一种可能性:我刚刚更新了macOS,它总是会破坏Apache配置文件。除此之外,我还必须重新启用
mod_rewrite
模块。找到那句话,上面写着
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
然后删除散列,让它显示
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
您需要告诉apache遵循您的.htaccess文件。您可以通过编辑apache.conf文件来实现这一点
$sudo nano /etc/apache2/apache.conf
向下滚动到该行
默认情况下,它将是:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
然后重新启动服务器
$ sudo service apache2 restart
完成了
来源:还有一件事需要检查,这是否描述了您的问题:
- htaccess和mod_rewrite设置正确
- 404在某些永久链接上出错,但在其他永久链接上没有错误
example.com/name_one/
example.com/name_two/
包含Wordpress安装的目录包括以下文件:
name_one.php
那么结果就是:
- –此永久链接将起作用
- –此永久链接将不起作用
更重要的是,第二个URL将给出一个404而不是运行name_one.php,这意味着这个问题很难诊断,因为它会给出与错误写入的.htaccess文件相同的症状。这部分是正确的
AllowOverride FileInfo
通常就足够了,请参阅。你应该始终为最少特权的原则而努力。谢谢MTLHD777-这也帮助了我。谢谢。。这帮助我用vagrant配置wordpress。谢谢MTLHD777,它现在可以工作了!但在我的例子中,插入“AllowOverride FileInfo”设置的文件不是/etc/apache2/httpd.conf,而是/etc/apache2/sites available/default。这正好节省了我的时间!事实上,这解决了我的问题。我认为AllowOverride是一个问题。谢谢你…我错过了同样的事情:):)在我的情况下,这个和AllowOverride文件信息
是它工作所必需的。也许你应该接受一个答案。查看这篇文章了解你的问题。道具非常完整的答案!为了未来的自己,我不得不记录下我所经历的疯狂!在我的例子中,AllowOverride All
子句失败了。这个答案很有帮助
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
$ sudo a2enmod rewrite
$ sudo service apache2 restart
example.com/name_one/
example.com/name_two/
name_one.php