删除WordPress外部页面的文件扩展名

时间:2020-04-14 作者:tonjaggart

我需要在WordPress之外的服务器上添加一个纯文本页面(上面不能有任何HTML)。我用public\\u html创建了这个页面,但我必须添加一个.html 扩展以获取要加载的页面,否则将转到404。问题是我必须删除文件扩展名。我已尝试将下面的代码添加到.htaccess 文件,但它仍然没有删除.html.

链接示例:https://example.com/apple-app-site-association.html 需要是https://example.com/apple-app-site-association/.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\\.]+)$ $1.php [NC,L]

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

。。。但这仍然没有删除扩展。

要清楚,应该已经在HTML锚定/链接中删除了扩展名。目的.htaccess 主要是将无扩展URL重写回底层文件系统路径(其中包含文件扩展名)。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\\.]+)$ $1.php [NC,L]
除了重写到.php, 不.html (如上所述),这太笼统了。您似乎只有1个需要重写的URL,但这会重写所有不包含点的内容,其中可能还包括您的所有WordPress URL!

如果请求的URL以尾部斜杠结尾,这也会失败,如您的示例所示。

有点旁白,但是。。。无论如何,前面的条件(检查请求是否映射到文件)在这里很可能是不必要的,因为您只匹配不包含点(即不包含文件扩展名)的请求-没有“文件扩展名”的URL不太可能直接映射到文件系统上的文件。(这意味着您的文件没有文件扩展名,这通常是个坏主意。)

因此,如果您已经链接到https://example.com/apple-app-site-association/ (如前所述,后面有斜杠),然后在WordPress前端控制器之前添加以下内容:

Options -MultiViews

# Rewrite "/url/" to "/url.html"
RewriteRule ^(apple-app-site-association)/$ $1.html [L]

# BEGIN WordPress
:
The$1 反向引用只是为了避免重复。

无需重复RewriteEngine 指令(因为这已经包含在下面的WordPress块中-顺序无关紧要)。包括Options 指示禁用多视图(如果尚未禁用)。

<小时>UPDATE: 如果文件真的是如您所说的“纯文本”(并且“上面不能有任何HTML”),那么为什么不使用.txt 扩展而不是.html? 通过使用.html, Apache将发送mime类型text/html, 而不是text/plain (与a一样.txt 扩展),这似乎是理想的结果?浏览器还设置格式text/plain 默认情况下,使用等距字体的文档会有所不同。

相关推荐

将子域定向到主域,并使用.htaccess保持子域格式

我正在使用bluehost和一个单站点wordpress站点。我想当有人输入bob时。实例com来显示示例中的Wordpress站点。com,但仍使用子域地址(bob.example.com)。我在Wordpress中有一块PHP,它可以识别子域并根据子域提供联系信息。我已尝试在中使用此重写规则。htaccess文件,虽然我觉得离它更近了一步,但它只是给出了新的错误:RewriteEngine On RewriteCond %{HTTP_HOST} ^(.*)\\.example\\.com$&#