为什么 modrewrite 使用我网站的完整路径?

发布于 2024-10-22 03:18:03 字数 478 浏览 0 评论 0原文

我想将所有非 .html 链接重定向到 html 链接,例如domain.com/hey 到domain.com/hey.html,所以我使用了以下规则

RewriteCond %{REQUEST_URI} !^\.html$
RewriteRule ^([a-zA-Z\+]+)$ $1\.html [R=301,L,NE]

但是重定向是这样发生的:

http://domain.com/what+there -> http://domain.com/home/user/public_html/what+there.html 这是为什么呢

I wanted to redirect all non .html links to html links, such as domain.com/hey to domain.com/hey.html so I used the following rules

RewriteCond %{REQUEST_URI} !^\.html$
RewriteRule ^([a-zA-Z\+]+)$ $1\.html [R=301,L,NE]

However the redirect happens like this:

http://domain.com/what+there -> http://domain.com/home/user/public_html/what+there.html

Why is this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我们的影子 2024-10-29 03:18:03

看起来您正在每个目录上下文(.htaccess)中使用 RewriteRule在这种情况下

[...] 每个目录的前缀(在您的情况下为 /home/user/public_html)会自动删除以进行 RewriteRule 模式匹配,并在之后自动添加任何相对(不以斜杠或协议名称开头)替换都会遇到规则集的结尾。

为了避免这种情况,请使用 RewriteBase ,像这样:

RewriteBase   /

还要注意其他额外的复杂性 items 用于每个目录重写。

looks like you are using your RewriteRule in a per-directory context (.htaccess or <Directory>). in this case,

[...] the per-directory prefix (in your case /home/user/public_html) is automatically removed for the RewriteRule pattern matching and automatically added after any relative (not starting with a slash or protocol name) substitution encounters the end of a rule set.

to avoid this, use RewriteBase, like so:

RewriteBase   /

also note the other additional complexity items for per-directory rewrites.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文