我有一个.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]
您应该在测试这些更改之前清除浏览器缓存。