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