【发布时间】:2018-03-08 14:26:39
【问题描述】:
我正在尝试弄清楚如何使用 apache 网络服务器和 php 重写 url。
下面的url是真正的未重写的url:
http://localhost:1337/rewritetest/index.php?id=12
我想通过
到达它http://localhost:1337/rewritetest/index/12
我的索引文件如下所示:
<?php
echo $_GET['id'];
?>
这可能吗? “新” url 不包含任何参数名称,所以我想我必须使用参数的顺序,但我不知道在这种情况下如何访问它们。
以下是我的重写:
RewriteCond %{QUERY_STRING} id=([-a-zA-Z0-9_+]+)
RewriteRule ^/?index.php$ %1? [R=301,L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)$ index.php?id=$1 [L]
有人知道我做错了什么吗?
【问题讨论】:
-
您的
.htaccess文件在哪里? -
抱歉,它与 index.php 位于同一文件夹中。而且它是服务器上唯一的htaccess,并且在服务器端没有任何配置
-
它是否总是应该重写为
index.php(如您的代码所建议的那样)还是应该重定向到 URL 中指定的任何基本名称(如您的 URL 所建议的那样)?例如。..../foo/26到..../foo.php?id=26? -
我主要想知道如何重写到一个特定的文件,但如果一个通用的解决方案看起来有点相似,我也会很高兴这样的解决方案。但是,如果我在正确的方向上得到帮助,我可以自己解决这个问题
标签: php apache .htaccess mod-rewrite