.htaccess重写规则而不更改浏览器中的URL

.htaccess重写规则而不更改浏览器中的URL,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有.htaccess文件: Options +FollowSymlinks RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^somedomain.com [NC] RewriteRule ^(.*)$ http://www.somedomain.com/$1 [R=301,NC] RewriteRule ^r/(.*)$ index.php?rid=$1 [NC] 但最后一个条件在我请求URL(如www.somedomai

我有
.htaccess
文件:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^somedomain.com [NC]
RewriteRule ^(.*)$ http://www.somedomain.com/$1 [R=301,NC]

RewriteRule ^r/(.*)$ index.php?rid=$1 [NC]
但最后一个条件在我请求URL(如
www.somedomain.com/r/123
)和显示URL(如
www.somedomain.com/index.php?rid=123
)时在浏览器中执行重定向。但是我需要在不更改URL的情况下调用此脚本


怎么了?

您使用了
R=301
尝试使用
L
,如下所示:

RewriteCond %{HTTP_HOST} ^somedomain.com [L]
RewriteRule ^(.*)$ http://www.somedomain.com/$1 [L]

RewriteRule ^r/(.*)$ index.php?rid=$1 [L]

L
=最后一条规则
N
=下一条
QAS
=追加查询字符串
R[=code]
=重定向到新url
NC
=不区分大小写
NE
=不转义输出
G
=已不存在)
PT
=pass-through
P
=pass-through,当然还有更多,但我最常使用这些。好的。现在可以工作了,但现在绝对路径是2级/r/123,在第一级执行脚本index.php,例如,我对图像的HTML路径有问题。如何解决它?在html头中设置一个基本路径,如
,对于两个级别,只需添加另一个
(.*)
和一个
$[0-9
]如下
重写规则^(.*)/(.*)$http://www.somedomain.com/$1/$2[L]