.htaccess 在 Ubuntu 16.04.2 LTS 上不起作用

.htaccess 在 Ubuntu 16.04.2 LTS 上不起作用

我想使用 .htaccess 重写 php 网页。或者简单地说“我不想使用 .php 扩展名”来访问任何网页。

.htaccess 文件(Ubuntu 14)运行正常:

RewriteEngine on
#remove the need for .php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

升级 AWS(现在为 Ubuntu 16.04)后,相同的 .htaccess 文件无法正常工作。我尝试了所有方法,例如更改权限、启用重写模式、将配置文件目录属性从“AllowOverride None”更改为“AllowOverride All”。

经过某种实验,我发现可以像下面这样修改上面的 .htaccess 文件,这样就可以正常工作了。但在这里它总是只允许访问给定的 php 页面。但我不想特定于任何给定的 php 页面。我也尝试编写正则表达式,但没有用。它总是只重定向到给定的页面。

<IfModule mod_rewrite.c><
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
</IfModule>

有人能帮我吗?提前谢谢了。

答案1

我遇到了同样的问题,这是解决方案ubuntu 和 apache

首先启用模块重写:

sudo a2enmod rewrite 

并重启 apache

sudo systemctl restart apache2

现在编辑目录级别

sudo vim /etc/apache2/sites-enabled/000-default.conf

在最后添加这些行

<Directory /var/www/html>
    AllowOverride All
 </Directory>

并再次重新启动 apache。

sudo service apache2 restart

答案2

我发现这个例子可以解决这个问题:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

来源:

https://stackoverflow.com/questions/4026021/remove-php-extension-with-htaccess

https://stackoverflow.com/questions/1992183/how-to-hide-the-html-extension-with-apache-mod-rewrite

答案3

翻译改编自谷歌翻译

你好,我在使用 Ubuntu 16.04 的 VPS 中遇到了同样的问题

我想用 Apache 部署一个用 Angular 8 制作的应用程序,我把它放在.htaccess我的 Angular 项目的文件夹中,但它不起作用,我激活了 a2enmod 重写,它重新启动了,但都没有用。

我通过执行这些简单的步骤成功修复了这个问题,BSB 评论道

1)运行命令: sudo nano /etc/apache2/sites-enabled/000-default.conf

2)在我们刚刚在控制台中打开的AllowOverride All末尾输入000-default.conf file

显然它应该在标签之前

3)重启服务器

----选修的-----

  • 除此之外,在index.html我的 Angular 项目文件中,在基本标签中输入名称

base href = "/ name /"

.htaccess文件末尾,放置

RewriteRule ^ /name/index.html

并且准备好这将完美地工作

----------

感谢您关注与 Ubuntu 16.04 签订的 VPS 中存在的一些问题

想要使用 Apache 的 Angular 8 卸载一个应用程序,请在我的 Angular 项目目录中找到 .htaccess 文件,该文件无法运行,请重新登录并删除 a2enmod 重写。

登录解决方案已解决这些问题,请评论 BSB

  1. sudo nano /etc/apache2/sites-enabled/000-default.conf 2. 复制 000-default.conf 文件末尾,以便我们可以将其打开到控制台

允许覆盖全部

必须遵守礼仪

  1. 我们首先查看服务器列表

---- 可选 -----

A parte de esto en mi archivo index.html de mi proyecto Angular en la etiqueta base coloque un nombre, de esta manera

base href="/nombre/"

Y en el archivo .htaccess también, al final colocar

重写规则 ^ /nombre/index.html

Y 列表这个功能完美

答案4

sudo vim /etc/apache2/apache2.conf

将 AllowOverride None 编辑为“全部”

<目录 /var/www/>

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted

然后运行这些命令

sudo a2enmod rewrite

sudo systemctl restart apache2.service

如果需要的话请尝试此链接

https://www.tutsmake.com/how-to-mod_rewrite-enable-in-apache-ubuntu-18-04/

https://www.keycdn.com/support/htaccess-not-working

相关内容