URL重写不起作用,a2enmod激活,使用覆盖全部,.htaccess正确

时间:2016-05-16 19:04:07

标签: php wordpress apache .htaccess mod-rewrite

问题

我安装了Wordpress。我打开了漂亮永久链接(帖子名称)。除主页之外的任何页面都是404 Not Found。这似乎表明了重写问题。

我的设置

Ubunutu 14.04 使用localhost作为我的URL 我的apache配置是/etc/apache2/sites-available/000-default.conf 我的wordpress位于/var/www/wordpress/ 我的相关htaccess位于/var/www/wordpress/.htaccess

我尝试了什么

当我运行a2enmod rewrite时,我得到了

Module rewrite already enabled

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

我的000-default.conf文件apache config

<Directory /var/www/wordpress/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

我已经在规范问题上尝试了所有答案。

How to enable mod_rewrite for Apache 2.2

我的问题

为什么我的重写不起作用?

2 个答案:

答案 0 :(得分:1)

我发现我需要在/etc/apache2/apache2.conf编辑apache配置并将/var/www/目录更改为AllowOverride All

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

我原本以为我的000-default.conf会覆盖这个,但事实并非如此,这解决了这个问题。

答案 1 :(得分:1)

检查正确的vhost配置的步骤: 检查是否有&#34; vhostname .conf&#34;文件在您的&#34;网站 - 可用&#34;目录。然后在&#34; sites-enabled&#34;中检查该文件是否有有效的符号链接。目录。您可以按a2ensite vhostname创建缺少的网站符号链接。在编辑器中打开此文件。它应该包含类似

的内容
<VirtualHost *:80>
    ServerAdmin webmaster@sitename.net
    ServerName  sitename.net
    ServerAlias www.site-name.net

    DocumentRoot /var/www/site-folder/htdocs

    <Directory /var/www/site-folder/htdocs/>
            Options Indexes FollowSymLinks MultiViews
            DirectoryIndex index.php7 index.php5 index.php index.html
            AllowOverride All

# apache 2.2 and below only (following 3 lines)
            Order allow,deny
            Allow from all
            Deny from none

# apache 2.4 only
            Require all granted  
    </Directory>

确保DocumentRoot文件夹具有匹配的<Directory /path/to/docroot>块。放入此块AllowOverride All或您希望在&#34; .htaccess&#34;中覆盖的任何选择性权限。

确保已启用重写模块。

sudo a2enmod rewrite

修改配置后,不要忘记重启/重新加载apache。

sudo apache2ctl graceful

检查模块和vhost配置是否已加载。

apache2ctl -t -D DUMP_VHOSTS
apache2ctl -t -D DUMP_MODULES