mod_rewrite 添加完整目录

mod_rewrite adding full directory

我有一个 .htaccess 文件来控制我的 Apache 服务器。打开 RewriteEngine 后,我有一个可以正常工作的重写规则:

RewriteRule ^display\.php/([a-zA-Z0-9-z\-]+)$ "https://pastelink.net/display?q=" [R=301,L]

在下一行我试图添加另一个规则,将 sitemap.xml 重定向到 sitemap.php。

我都试过了:

RewriteRule ^sitemap.xml$ "https://pastelink.net/sitemap.php" [R=301, L]

RewriteRule ^sitemap.xml sitemap.php [R=301, L]

以及其他组合,包括或省略 ^ $ 和标志。每次的结果都是重写为:

https://pastelink.net/home/pastelin/public_html/sitemap.php

当我的意图是:

https://pastelink.net/sitemap.php

为什么要将这些额外的目录添加到 URL 中?我不明白为什么它的行为会与第一个重写规则不同。如果有帮助,我可以 post 整个 .htaccess 文件,尽管 L 标志应该使后面的代码无关紧要。

静默重写规则不需要 http://。保持你的 root .htaccess 如下:

RewriteEngine On
RewriteBase /

RewriteRule ^display\.php/([\w-]+)/?$ https://pastelink.net/display?q= [R=301,L,QSA,NC]
RewriteRule ^sitemap\.xml$ sitemap.php [NC,L]

您应该在测试这些更改之前清除浏览器缓存。