在 Ubuntu 下使用 Apache 设置伪静态(URL Rewrite),通常是通过 mod_rewrite 模块实现的。下面以最常见的情况(如 ThinkPHP、WordPress、自定义规则)为例说明。
sudo a2enmod rewrite
sudo systemctl restart apache2
一般位于:
/etc/apache2/sites-available/000-default.conf
# 或你自己配置的站点文件
示例:
sudo nano /etc/apache2/sites-available/000-default.conf
必须把 AllowOverride None 改成 AllowOverride All
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
保存后重启 Apache:
sudo systemctl restart apache2
在项目根目录创建或编辑 .htaccess 文件:
cd /var/www/html
nano .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
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]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
AllowOverride Allmod_rewrite 已开启.htaccess(前面有点)DocumentRoot 路径是否正确tail -f /var/log/apache2/error.log
注意:Nginx 不支持 .htaccess,如果你其实是 Nginx,请告诉我,我给你 Nginx 的配置方式。
如果你能告诉我:
我可以给你更精确的伪静态配置。