.htaccess htaccess:Mediafire.com类URL

.htaccess htaccess:Mediafire.com类URL,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正试图想出一些修改来翻译http://example.com/?7gudznrxdnu进入http://example.com/view.php?id=7gudznrxdnu 但任何其他页面都将正常运行,如http://example.com/contact等等。我认为这会起作用: RewriteEngine On RewriteCond %{QUERY_STRING} ^[a-z0-9]+$ RewriteRule ^$ view.php

我正试图想出一些修改来翻译
http://example.com/?7gudznrxdnu
进入
http://example.com/view.php?id=7gudznrxdnu


但任何其他页面都将正常运行,如
http://example.com/contact
等等。

我认为这会起作用:

RewriteEngine   On
RewriteCond   %{QUERY_STRING}     ^[a-z0-9]+$
RewriteRule   ^$                  view.php?id=%{QUERY_STRING}    [L]
如果要在浏览器的地址字段中显示重写内容,则必须将
[L]
替换为
[L,R=301]

说明:查询字符串(问号后面的内容)不是RewriteRule在其匹配模式中看到的URL的一部分,因此您无法在那里检查问号。在我的解决方案中,当且仅当(
RewriteCond
)查询字符串仅由
a-z
和/或
0-9
组成,我的规则仅重写以斜杠结尾的URL(查询字符串除外)。我将其重定向到
view.php?id=
,然后将查询字符串附加到该位置

编辑:在我的Apache服务器上进行了测试,我还没有发现任何bug。

您应该尝试(在.htaccess中):


如果index.php存在,这会将
/?asdf123
重定向到
/index.php?asdf123
。我的回答解决了您的问题吗?如果是这样,如果你接受我的回答,我会很高兴的!:-)谢谢
RewriteEngine On
RewriteRule ^\?([^/\.]+)?$ view.php?id=$1 [L]