我将永久链接结构更新为/%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.php [L]
</IfModule>
# END WordPress
但我仍然在网页上收到404错误。我还需要更改其他设置吗?
编辑:如果它有助于apache日志似乎直接在永久链接文件夹中查找。即:
[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/
答案 0 :(得分:71)
对于登陆此页面的其他人 - 另一个问题可能是(如果您使用Apache作为您的Web服务器)是您的httpd.conf或您的sites-available / sitename.conf文件需要编辑。
您的网络目录需要允许.htaccess文件覆盖其设置。
在文件中查找您的网站目录 - 它将位于conf文件的大部分内容或隔离到VirtualHost部分。
<Directory /path/to/site>
#add the following setting to allow .htaccess in your web dir to work
AllowOverride FileInfo
#other settings ---
</Directory>
这将允许您在WordPress中设置所需的WordPress URL。
***编辑 - 谢谢你nietonfir更新。首先使用最少量的权限。如果这不起作用,请将AllowOverride FileInfo
替换为AllowOverride All
答案 1 :(得分:40)
可能有多种因素阻止重写规则起作用。我的ubuntu服务器需要更改3件才能让永久链接工作。
在较新版本的apache2中,您需要启用模块:
sudo a2enmod rewrite
sudo service apache2 restart
您可能还需要修改apache2.conf文件。
sudo nano /etc/apache2/apache2.conf
将您的网络目录覆盖规则更改为 AllowOverride All 。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
之后,再次重启服务。
WordPress安装目录中的.htaccess文件需要由网络服务器拥有或可读/可修改。
这可以通过将所有者更改为www-data(通常是webserver用户)或更改权限来实现。
sudo chown www-data /var/www/wordpress-install/.htaccess
OR
sudo chmod 664 /var/www/wordpress-install/.htaccess
登录到您的Wordpress管理员后端并保存永久链接设置,它们应该可以正常工作。
答案 2 :(得分:28)
现在已经解决了。我没有启用mod_rewrite。所以我这样做了:
$ 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
答案 3 :(得分:8)
你想告诉apache关注你的.htaccess文件。您可以通过编辑apache.conf文件
来完成此操作$sudo nano /etc/apache2/apache.conf
向下滚动到该行 默认情况下,它将是:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
将AllowOverride的值更改为All,现在变为:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
按ctrl + x并按y保存配置文件。为了对服务器进行此更改,首先启用mod_rewrite。
$ sudo a2enmod rewrite
然后重启服务器
$ sudo service apache2 restart
完成!
来源:https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/
答案 4 :(得分:6)
使用下面的.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
由于
答案 5 :(得分:0)
如果您在ubuntu上 设置新的或克隆的网站 ,请记住对网站配置文件进行符号链接,例如: /etc/apache2/sites-available/your-file.conf
到/etc/apache2/sites-enabled
文件夹,以便apache加载它。
运行:sudo a2ensite your-file.conf
,然后sudo service apache2 reload
。
sudo a2dissite your-file.conf
删除符号链接,即禁用配置。
答案 6 :(得分:0)
我面临同样的问题,还有一件事需要寻找。
以下是wordpress永久链接正常工作所需要做的事情:
确保您在wordpress目录中拥有适当的文件和文件夹权限模式:
sudo find . -type f -exec chmod 644 {} +
sudo find . -type d -exec chmod 755 {} +
对于永久链接结构,请确保在apache中启用mode_rewrite
:
sudo a2enmod rewrite
sudo service apache2 restart
答案 7 :(得分:0)
WAMP用户(Windows):某些版本的WAMP(所有版本?)默认情况下不启用mod_rewrite或允许遵循SymLinks。要启用所需功能,请导航至apache/conf/httpd.conf file
,使用文本编辑器打开并取消注释行LoadModule rewrite_module modules/mod_rewrite
。所以(即删除行前面的哈希/井号)。然后在同一个文件中进一步向下,有一个部分以第&#34; 选项FollowSymlinks &#34;行开头。从&#34; AllowOverride none
&#34;更改该部分中的第二行到AllowOverride all
。保存已编辑的httpd.conf并重新启动所有WAMP模块。你的固定链接现在应该可以工作。
答案 8 :(得分:0)
还有另一种可能性:我刚刚更新了我的macOS,总是搞砸了Apache配置文件。除此之外,我还必须重新启用mod_rewrite
模块。找到说明的行
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
并删除散列,如上所述,
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
答案 9 :(得分:0)
还要检查一下这是否描述了您的问题:
请确保与您的Wordpress安装目录相同的文件夹中没有现有的.php文件或目录,其名称与Wordpress永久链接匹配。
例如,如果您具有以下Wordpress页面永久链接:
example.com/name_one/
example.com/name_two/
,包含您的Wordpress安装的目录包括以下文件:
name_one.php
然后将是结果:
更重要的是,第二个URL 将给出一个404而不是运行name_one.php ,这意味着该问题很难诊断,因为它可以产生与错误编写的.htaccess文件相同的症状。