.htaccess和mod_rewrite帮助

时间:2010-02-14 07:36:32

标签: apache .htaccess mod-rewrite

使用mod_rewrite,如何转换遵循此模式的网址:

http://example.com/index.php?id=14

进入这种模式:

http://example.com/14/

3 个答案:

答案 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
(这里特别是我可能有一个问题,因为数据库中的名称中有空格 - 可以通过 - 或者使用空间处理它来解决吗?)

  1. 以下是我在.htaccess文件中的内容,该文件位于服务提供商的共享托管服务器上。如何向以下内容添加更多查询字符串?
  2. RewriteCond%{QUERY_STRING} ^(([^&amp;] &amp; +))id =(\ d +)(&amp; +(。*))?$ RewriteRule ^ studio_details.php $ /%3 /?%2%5 [R]

    1. 如何将我网站上存在的所有.php扩展名重写为.html?因为没有任何改写在mycase中工作。 (仅在第1点上方)

    2. 尽管我的.htaccess文件中没有任何代码,但我将index.php文件重定向到主机目录,例如“vhost \ websites \ syildiz \ www ...”等。是否有任何规则确保索引页面是index.php(将被重写为index.html)

    3. 是否有规则在执行规则之前检查规则是否有效?比如在显示页面之前检查文件和查询字符串变量是否已执行并产生?

    4. 感谢 Suls