我是Wordpress的新手,但尝试了所有文档和Stack Overflow帖子以寻找可能的解决方案,但到目前为止还没有一个有效。
我已经验证了mod重写已启用并按预期工作。按照这里提到的所有步骤。 https://wordpress.stackexchange.com/questions/105795/remove-index-php-from-permalinks
还重启了Apache几次,但是当我从永久链接设置中删除index.php路径时仍然会出现404错误。
将wordpress目录重命名为博客,以访问该网站www.xyz.com/blog。现在要求是访问任何博客帖子 www.xyz.com/blog/2018/02/09/my-wp-post,URL中没有index.php。
除博客网站的WP外,我们没有任何其他CMS内容。
永久链接设置(自定义结构): /index.php/%year%/%monthnum%/%天%/%postname%/
.htaccess文件内容:
BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
答案 0 :(得分:1)
我花了很多时间尝试在这里或其他地方回答的许多不同的方法,但没有一个解决了我的问题。
这就是我所做的,它解决了我的问题。
在httpd.conf文件中输入:
<Directory "/var/www/html/blog">
Options FollowSymLinks
AllowOverride All
答案 1 :(得分:0)
假设Ubuntu 16.04和Apache2
1)激活mod_rewrite。它可用,但未通过全新Apache 2安装启用。
sudo a2enmod rewrite
2)重新启动Apache
sudo systemctl restart apache2.service
3)设置.htaccess
(注意:Apache建议使用服务器配置文件,而不是将规则插入.htaccess,但是,对于本示例,由于对性能的影响很小,因此将规则插入.htaccess就足够了。) >
sudo nano /etc/apache2/sites-available/000-default.conf
在000-default.conf中插入以下内容
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
4)重新启动Apache
重复步骤2
5)在Web根目录中创建.htaccess。
touch /var/www/html/.htaccess
将以下内容插入.htaccess
RewriteEngine On
6配置URL重写 (注意:假设使用index.php)
sudo nano /var/www/html/.htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
mod_rewrite是一个有用的Apache模块,可以有效地用于确保人类可读的URL和良好的SEO结果。如果您想了解有关mod_rewrite的更多信息,请查看Apache的mod_rewrite Introduction和Apache的official documentation for mod_rewrite。
答案 2 :(得分:0)
简而言之,就像提到的@Cnu一样,互联网上接触到的资源很少的问题是,您的apache配置必须包含AllowOverride FileInfo指令,以使wordpress重写不使用/index.php/就可以工作。 >
从Apache 2.4开始,AllowOverride的默认设置为“无”,这通常是使“漂亮的url”正常工作的障碍(在这种情况下,放弃index.php)。如@cnu所述,您应该仔细阅读以下资源:https://wordpress.org/support/article/using-permalinks/。
<?php phpinfo();?>
的行,并调用https://domainofyourb.log/info.php)<Directory></Directory>
部分中是否包含指令AllowOverride FileInfo PS:编写此答案是因为我无法对cnu的答案发表评论(没有代表),并且想更正1. allowoverride不需要设置为ALL,可以将其设置为简单的“ FileInfo “,2.更新到wordpress doc的链接,并3.提供导致此问题的Apache 2.4更改的背景信息。
答案 3 :(得分:-1)
转到管理页面,控制板->设置->永久链接设置->自定义结构,选择/%postname%/或/%year%/%monthnum%/%day%/%postname%/由您决定。