mod_rewrite正在添加完整目录


mod_rewrite adding full directory

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

RewriteRule ^display'.php/([a-zA-Z0-9-z'-]+)$ "https://pastelink.net/display?q=$1" [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中?我不明白为什么它的行为会与第一条重写规则不同。如果有帮助的话,我可以发布整个.htaccess文件,尽管L标志应该使后面的代码不相关。

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

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

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