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