使用mod_rewrite,如何转换遵循此模式的网址:
http://example.com/index.php?id=14
进入这种模式:
http://example.com/14/
答案 0 :(得分:1)
RewriteCond %{QUERY_STRING} id=(.+)
RewriteRule ^/index.php$ /%1/? [R]
答案 1 :(得分:1)
我认为你宁愿在/<ID>/
内部重写/index.php?id=<ID>
的请求,试试这个:
RewriteRule ^(\d+)/$ index.php?id=$1
但是,如果您确实要将请求内部重定向到/index.php?id=<ID>
/<ID>/
:
RewriteCond %{QUERY_STRING} (^|&)id=(\d+)(&|$)
RewriteRule ^index\.php$ /%2/? [R]
如果您想保留其他可能的URL参数:
RewriteCond %{QUERY_STRING} ^(([^&]*&+)*)id=(\d+)(&+(.*))?$
RewriteRule ^index\.php$ /%3/?%2%5 [R]
答案 2 :(得分:1)
您的代码是我的.htaccess文件中唯一最终使用的代码,但是我有第二个查询字符串并且无法使其正常工作。我的钥匙是id和名字。我怎么才能得到
http://example.com/studio_details.php?id=123&name=Studio Wrox London
到
http://example.com/123/Studio Wrox London
(这里特别是我可能有一个问题,因为数据库中的名称中有空格 - 可以通过 - 或者使用空间处理它来解决吗?)
RewriteCond%{QUERY_STRING} ^(([^&amp;] &amp; +))id =(\ d +)(&amp; +(。*))?$ RewriteRule ^ studio_details.php $ /%3 /?%2%5 [R]
如何将我网站上存在的所有.php扩展名重写为.html?因为没有任何改写在mycase中工作。 (仅在第1点上方)
尽管我的.htaccess文件中没有任何代码,但我将index.php文件重定向到主机目录,例如“vhost \ websites \ syildiz \ www ...”等。是否有任何规则确保索引页面是index.php(将被重写为index.html)
是否有规则在执行规则之前检查规则是否有效?比如在显示页面之前检查文件和查询字符串变量是否已执行并产生?
感谢 Suls