我有一个.htaccess文件来控制我的Apache服务器。在打开RewriteEngine后,我有一个正常的重写规则:
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标志应该使代码跟随无关紧要。
答案 0 :(得分:1)
对于静默重写规则,您不需要http://
。保持你的root .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]
在测试这些更改之前,您应该清除浏览器缓存。