apache - 将 .html 添加到 url 但未找到结果 404
问题描述
阅读this和bababa,但遗憾的是他们都不能指导我如何调试。
我正在尝试将以下 url https://example.com/hello重定向 到 https://example.com/hello.html
这是我的做法
第一的
vim /etc/apache2/apache2.conf
,设置AllowOverride All
在<Directory /var/www/>
现在是
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
第二
sudo service apache2 restart
第三
.htaccess
在代码中public_html
和代码下创建
<IfModule mod_rewrite.c>
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^.*\.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{REQUEST_FILENAME}.html
</IfModule>
但仍然返回 404 not found ,如下所示。
任何建议或我缺少配置 apache 的任何部分?谢谢
- - - 回答 - - -
错过了 的配置mod_rewrite
。可以看看这个帖子
解决方案
您.html
在其末尾添加%{REQUEST_FILENAME}
将导致 404,因为它%{REQUEST_FILENAME}
代表完整的文件系统路径而不是 URI 路径。
你应该使用这个规则:
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.html$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . %{REQUEST_URI}.html [L]
甚至更好:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ $1.html [L]
推荐阅读
- python - 是否有用于整个数据集的图像数据增强的 python 代码?
- java - 用于识别解析错误的默认值(字符串 -> 双精度/任何数字)
- ios - Xcode 旧版本未在自动完成中显示“Alamofire”及其方法
- web - 是否可以在 xtext Web 编辑器中以透明的方式为用户加载交叉引用文件声明?
- angular - Angular a标签下载文件格式不一致
- google-cloud-data-fusion - 带有嵌套表的自动模式
- aws-lambda - Django Zappa 生成的 cloudfront 生成 403 错误
- amazon-web-services - Lex 可以开始对话吗?
- android - 发送 Whatsapp 邀请,就像其他无法在 pie 设备中运行的应用程序一样
- linux - Linux find 未命中目标?