在 Ubuntu 下使用 Apache2 设置“伪静态”(通常是指通过 .htaccess 或虚拟主机配置实现 URL Rewrite),一般步骤如下:
伪静态依赖 mod_rewrite 模块。
sudo a2enmod rewrite
sudo systemctl restart apache2
编辑你的站点配置,例如:
sudo nano /etc/apache2/sites-available/000-default.conf
在 <VirtualHost *:80> 中添加或修改:
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
保存后重启 Apache:
sudo systemctl restart apache2
⚠️ 默认 Ubuntu 中
AllowOverride None,不改成All,.htaccess是不生效的。
在网站根目录(如 /var/www/html)创建或编辑 .htaccess:
sudo nano /var/www/html/.htaccess
index.php?id=1 伪静态为 /article/1RewriteEngine On
RewriteRule ^article/([0-9]+)$ index.php?id=$1 [L]
访问:
/article/1 → index.php?id=1
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
也可以不写 .htaccess,直接写在 <VirtualHost> 中:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
RewriteEngine On
RewriteRule ^article/([0-9]+)$ index.php?id=$1 [L]
</VirtualHost>
rewrite 模块AllowOverride 不是 Allsudo tail -f /var/log/apache2/error.log
如果你能告诉我:
我可以给你 精确可用的伪静态规则。