Mod rewrite 使用wget后重写规则

Mod rewrite 使用wget后重写规则,mod-rewrite,wget,Mod Rewrite,Wget,我使用wget保存了整个网站,因此我得到了以下格式的文件: book.asp@id=1005335&rbr=5.html (这是一个实际的文件名) 所以现在我在写规则时遇到了麻烦 RewriteBase / RewriteRule ^book\.asp$ /book@$1.html 此规则将原始查询/book.asp?id=1021278&rbr=0重写为/book@.html?id=1021278&rbr=0 我怎样才能摆脱它?并将.html移到末尾?=) 您可以在根目录下的.ht

我使用wget保存了整个网站,因此我得到了以下格式的文件:

book.asp@id=1005335&rbr=5.html
(这是一个实际的文件名)

所以现在我在写规则时遇到了麻烦

RewriteBase /
RewriteRule ^book\.asp$ /book@$1.html
此规则将原始查询
/book.asp?id=1021278&rbr=0
重写为
/book@.html?id=1021278&rbr=0


我怎样才能摆脱它?并将.html移到末尾?=)

您可以在根目录下的.htaccess文件中尝试此操作:

以下是根据OP注释修改的规则集:
谢谢这很有效。如何正确执行这些重写中的多个?通过将
RewriteCond
RewriteRule
行复制到末尾?它们有这么大的不同吗?举一些请求的例子,让我有个想法。只是不同的文件名,比如faq.asp,我知道
L
flag停止了进一步的处理。不是真的。但是,如果有什么不同,我会用一个选项更新我的答案。谢谢,这是可行的,但是当请求只是faq.asp(没有查询字符串-它失败)时。我应该在正则表达式的末尾添加(*.+)吗?
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING}  .
RewriteCond %{REQUEST_URI}  !\.html          [NC]
RewriteRule ^([^.]+)\.asp   /$1.asp@%{QUERY_STRING}.html? [R=301,L,NC]