如何解决如何使用参数将txt文件重定向到html页面,然后调用该文件的内容
我正在尝试编写一些 RewriteRule/RewriteCond,但找不到合适的资源/教程来了解如何实现我的目标。我对正则表达式和重写规则知之甚少。
这个目标是能够在打开 Markdown 文本文件时将像 Strapdown 这样的 Markdown 库应用到它。我的想法是:
- 用户在 http://somedomain.com/myFile.md 处打开 Markdown 文件
- RewriteEngine 知道您想要这样做并将您重定向到类似 http://somedomain.com/markdown.html?myFile.md
- 那个 markdown html 页面将获取 markdown 文件的内容(文件名在 url 参数中),并将 css 库应用于加载和注入到 div 中的任何内容。
我想我知道如何使用参数将 md 文件重定向到 html 文档:
RewriteEngine On
RewriteRule ^(.*).md /markdown.html?md=$1 [QSA,L]
但是随后获取 .md 文件的 markdown.html 页面实际上正在获取 markdown.html 本身的内容(因为该规则)。
所以我的想法是在文件名的末尾添加一些字符(比如在文件名的末尾添加一个“?”:“myFile.md?”)以便能够在重写规则中捕获它.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^(.*)\?$
RewriteRule ^(.*).md /markdown.html?md=$1 [QSA,L]
但这不是要走的路......或者我上次重写的合成器是错误的,我不明白为什么。
有什么想法吗?
感谢您的帮助!
解决方法
我认为问题在于我试图使用无法检测的模式(即:在我的网址末尾找到“?”)。
我将其更改为尝试查找任何数字作为参数并且它有效
<Container>
<h1>User Details</h1>
<Row>
{users && users.data.map((user) => ( //update
<Col sm={12} md={6} lg={4} xl={3}>
<Card className="my-3 p-3 rounded">
<Card.Body>
<Card.Title>
<strong>{user.name}</strong>
</Card.Title>
<Card.Text as="h3">{user.details}</Card.Text>
</Card.Body>
</Card>
</Col>
))}
</Row>
</Container>
markdown.html 文件现在按预期接收请求的 .md 文件。
,通过查看 OP 的回答,我对其进行了一些额外的改进,请将您的 htaccess 规则文件如下。
RewriteEngine On
RewriteCond %{QUERY_STRING} !^([0-9])$
RewriteRule ^(.*)\.md /markdown.html?md=$1 [QSA,L,NC]
在 OP 的回答中所做的改进:
- 首先在 RewriteRule 左侧转义
.md
以使其成为文字字符,否则它可能匹配amd
ORbmd
等字符串。 - 第二次在 RewriteRule 中使用
NC
标志使其不区分大小写,以便.md
或.MD
都匹配。 - 如果您的查询字符串中可能包含超过 1 位数字,还有其他建议,请将您的
[0-9]
更改为[0-9]+
在 RewriteCond 部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。