.htaccess 文件在 LAMP 中不起作用
.htaccess file not works in LAMP
这是我的 .htaccess 文件。我在我的项目中使用了 Codeigniter Framework。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
</IfModule>
我的错误在哪里?但它适用于 xampp。
您确定 mod_rewrite 模块已加载吗?转到 httpd.conf 并搜索 -
LoadModule rewrite_module modules/mod_rewrite.so
并确保
之前没有#[hash tag]
您不能只是从一台服务器移动到另一台服务器而不确保您的先决条件在那里。大多数系统默认情况下这些东西都没有打开。您也没有提供有关您的设置甚至文档根目录的任何细节。
所以开始吧,它是一个 Ubuntu 服务器和 apache2,您需要做这些事情。
如果这是新的 LAMP 安装,您需要做的第一件事是确保重写已打开。
运行 此命令启用 mod_rewrite.
sudo a2enmod rewrite
然后您需要确保在您的文档根目录中允许 .htaccess。
编辑
/etc/apache2/sites-available/000-default.conf
在这个文件中搜索这个
AllowOverride None
并将其更改为
AllowOverride All
然后重启apache2。
sudo service apache2 restart
编辑:根据您的评论,您需要使虚拟主机看起来像这样,然后重新启动 apache2。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html>
AllowOverride All
</Directory>
</VirtualHost>
打开你的终端
运行 以下代码:
sudo nano /etc/apache2/apache2.conf
往下改:
AllowOverride All
看起来像:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
然后重启apache2。
sudo service apache2 restart
然后 .htaccess 文件是
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
这是我的 .htaccess 文件。我在我的项目中使用了 Codeigniter Framework。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
</IfModule>
我的错误在哪里?但它适用于 xampp。
您确定 mod_rewrite 模块已加载吗?转到 httpd.conf 并搜索 -
LoadModule rewrite_module modules/mod_rewrite.so
并确保
之前没有#[hash tag]您不能只是从一台服务器移动到另一台服务器而不确保您的先决条件在那里。大多数系统默认情况下这些东西都没有打开。您也没有提供有关您的设置甚至文档根目录的任何细节。
所以开始吧,它是一个 Ubuntu 服务器和 apache2,您需要做这些事情。
如果这是新的 LAMP 安装,您需要做的第一件事是确保重写已打开。
运行 此命令启用 mod_rewrite.
sudo a2enmod rewrite
然后您需要确保在您的文档根目录中允许 .htaccess。
编辑
/etc/apache2/sites-available/000-default.conf
在这个文件中搜索这个
AllowOverride None
并将其更改为
AllowOverride All
然后重启apache2。
sudo service apache2 restart
编辑:根据您的评论,您需要使虚拟主机看起来像这样,然后重新启动 apache2。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html>
AllowOverride All
</Directory>
</VirtualHost>
打开你的终端 运行 以下代码:
sudo nano /etc/apache2/apache2.conf
往下改:
AllowOverride All
看起来像:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
然后重启apache2。
sudo service apache2 restart
然后 .htaccess 文件是
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]