Mod rewrite URL重写不可见-如何防止重写的URL出现在地址栏中?

Mod rewrite URL重写不可见-如何防止重写的URL出现在地址栏中?,mod-rewrite,url-rewriting,Mod Rewrite,Url Rewriting,我浏览了其他主题,包括这一个:,但我找不到解决问题的方法 我有以下改写规则: RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?s=$1 [L,NC] RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?s=$1 [L,NC] 它所做的是编写类似http://myaddress/parameter至http://myaddress/index.php?s=parameter并在浏览器的地址栏中显示此新重写的地址 如何在不在

我浏览了其他主题,包括这一个:,但我找不到解决问题的方法

我有以下改写规则:

RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?s=$1 [L,NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?s=$1 [L,NC]
它所做的是编写类似
http://myaddress/parameter
http://myaddress/index.php?s=parameter
并在浏览器的地址栏中显示此新重写的地址

如何在不在地址栏中显示重写的URL的情况下进行重写


编辑

这是my.htaccess文件的内容:

DirectoryIndex index.php

RewriteEngine On

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?$ index.php?u=$1&s=$2 [L,NC]
RewriteRule ^([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?$ index.php?u1=$1&u2=$2&s=$3 [L,NC]
这应该起作用:

RewriteEngine On

RewriteRule ^([-a-zA-Z0-9_]+)$ index.php?s=$1 [L]
RewriteRule ^/?$ index.php [L]

一,。不需要两个执行相同任务的规则(唯一的区别是尾部斜杠的存在)

二,。如果您有
[NC]
标志,
a-Z
就足够了

三,。尝试不使用
/

考虑到上述所有因素,该规则将变为:

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA]
p.S. 我还添加了
QSA
标志以保留原始查询字符串(如果存在)


该规则经过测试,运行良好。如果它仍然不适用于您,则发布您拥有的所有重写规则。

它仍然不适用。它在地址栏中不断显示重写的URL。我已经编辑了我的帖子以显示重写规则。谢谢,但仍然不起作用,我已经编辑了我的问题以发布我拥有的重写规则。@AntonioJunior抱歉,但这些规则无法重定向(浏览器中的URL更改)。如果您可以编辑服务器配置,然后启用重写调试(
rewriteloglevel9
),重新启动Apache,尝试这个有问题的URL并检查重写日志——它应该会告诉您发生了什么。也许是您的PHP代码进行了重定向——检查“创建空PHP文件”并在重写规则中使用它而不是index.PHP。我还建议清除浏览器缓存或尝试其他浏览器。。。就像现代浏览器做缓存重定向一样。嗨,懒人,非常感谢!事实上,我在PHP代码中做了一个重定向,直到你指出后我才记得。谢谢你耐心地解释。