我正在尝试想出一些mod_rewrite来将http://example.com/?7gudznrxdnu转换为http://example.com/view.php?id=7gudznrxdnu
但是任何其他页面都可以正常工作,比如http://example.com/contact等等。
发布于 2011-09-02 09:36:58
我认为这将会起作用:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^[a-z0-9]+$
RewriteRule ^$ view.php?id=%{QUERY_STRING} [L]如果您希望重写内容显示在浏览器的地址字段中,则必须用[L,R=301]替换[L]。
解释:查询字符串(问号后面的内容)不是RewriteRule在其匹配模式中看到的网址的一部分,因此您不能在那里检查问号。在我的解决方案中,当且仅当(RewriteCond)查询字符串仅由a-z和/或0-9组成时,我才运行规则,并且我的规则只重写以斜杠结尾的URL(查询字符串除外)。我将它重定向到view.php?id=,然后将查询字符串附加到它后面。
Apache:在我的服务器上测试了,我还没有发现任何bug。
发布于 2011-09-02 09:37:07
您应该尝试(在您的.htaccess中):
RewriteEngine On
RewriteRule ^\?([^/\.]+)?$ view.php?id=$1 [L]https://stackoverflow.com/questions/7278342
复制相似问题