我浏览过其他主题,其中包括:Mod_rewrite invisibly: works when target is a file, not when it's a directory,但我无法找到解决问题的方法。URL无法重写 - 如何防止重写的URL出现在地址栏中?
我有以下重写规则:
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的情况下进行重写?
编辑
这是我的.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]
谢谢,但它仍然不起作用,我编辑了我的问题以发布我拥有的重写规则。 – AntonioJunior
@AntonioJunior对不起,但没有办法,这些规则将做一个重定向(浏览器中的URL更改)。如果你可以编辑服务器配置,然后启用重写调试('RewriteLogLevel 9'),重启Apache,尝试这个有问题的URL并检查重写日志 - 它应该告诉你发生了什么。也许这是你的PHP代码重定向 - 检查创建空的PHP文件,并在重写规则中使用它来代替index.php。我还建议**清除浏览器缓存**或尝试其他浏览器......因为现代浏览器会缓存重定向。 – LazyOne
嗨,LazyOne,非常感谢你!实际上,我在PHP代码中做了一个重定向,在你指出它之前我不记得那个。感谢您耐心解释。 – AntonioJunior