当尝试启用 URL 重写时,我无法让它工作。我已使用命令启用它sudo a2enmod rewrite
,并使用 重新启动了服务sudo service apache2 restart
。但是,在根文件夹和子文件夹中,URL 重写不起作用。
PS:使用命令时我从服务器得到这个答案sudo a2enmod rewrite
:
Module rewrite already enabled
根据要求:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
答案1
Apache2 默认安装了 mod_rewrite。要检查是否是这种情况,请验证 /etc/apache2/mods-available/rewrite.load 是否存在。
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
要启用并加载 mod_rewrite,请执行其余步骤。
$ sudo a2enmod rewrite
上面的命令将在 /etc/apache2/mods-enabled 中创建一个符号链接。
$ ls -al /etc/apache2/mods-enabled/rewrite.load
lrwxrwxrwx 1 root root 30 Dec 9 23:10 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load
然后打开以下文件,并将每次出现的“AllowOverride None”替换为“AllowOverride all”。
$ sudo vi /etc/apache2/sites-available/default
最后,重新启动Apache2
这是 .htaccess 文件的示例
Options +FollowSymlinks
RewriteEngine On
RewriteRule index.php / [L,R=301]