我想使用 .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
- sudo nano /etc/apache2/sites-enabled/000-default.conf 2. 复制 000-default.conf 文件末尾,以便我们可以将其打开到控制台
允许覆盖全部
必须遵守礼仪
- 我们首先查看服务器列表
---- 可选 -----
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/