如何创建以下.htaccess文件

时间:2009-12-28 10:32:44

标签: php apache .htaccess mod-rewrite

我在.htaccess文件中编写了以下代码

Options +FollowSymLinks
RewriteEngine on
RewriteRule page/(.*)/ index.php?page=$1&%{QUERY_STRING}
RewriteRule page/(.*) index.php?page=$1&%{QUERY_STRING}

网址“xyz.in/index.php?page=home”在浏览器“xyz.in/page/home”的地址栏中会如下所示

如果我想通过URL传递变量,则必须写为“xyz.in/page/home?value=1”或“xyz.in/page/home?value=1&value2=56&标志=真“

url的初始部分(xyz.in/page/home)很干净(搜索引擎友好),但是如果我在url中传递更多变量,那么它看起来不太好。

我想让这个网址像 “xyz.in/page/home/value/4/value2/56”等等。

变量value和value2不是静态的,它们仅用于此处。名字可以是任何东西。

是否可以这样做?

请帮我形成“.htaccess”文件

(欢迎任何与此问题中使用的标题或语言或标签相关的更正)

由于

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用PHP解析URL路径。然后你只需要这个规则来重写对PHP文件的请求:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^index\.php$ index.php [L]

该条件将确保仅重写对不存在文件的请求。

您的PHP脚本可能如下所示:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', ltrim($_SERVER['REQUEST_URI_PATH']));
for ($i=0, $n=count($segments); $i<$n; $i+=2) {
    $_GET[rawurldecode($segments[$i])] = rawurldecode($segments[$i+1]);
}