URL重写看不见的 - 如何防止重写URL出现在地址栏?(URL Rewriting invisib

2019-09-26 19:55发布

我浏览过的其他主题,包括这一个: mod_rewrite的无形:工作时,目标是一个文件,而不是当它是一个目录 ,但我不能找到一个解决我的问题。

我有以下重写规则:

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

它所做的是写像什么http://myaddress/parameterhttp://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]

Answer 1:

1.无需2条规则,做同样的工作(唯一的区别是斜线的存在)。

2.无需具有a-zA-Z的模式,如果你有[NC]标志- az就够了。

3.尝试一条规则没有./

考虑到所有上述提到的规则将变为:

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA]

PS我还添加了QSA标志保留原始查询字符串(如果存在的话)。

该规则测试,工作正常。 如果仍然不为你工作,然后上传您拥有所有重写规则。



Answer 2:

这应该工作:

RewriteEngine On

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


文章来源: URL Rewriting invisibly - How to prevent rewritten URL to appear in the address bar?