我在.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”文件
(欢迎任何与此问题中使用的标题或语言或标签相关的更正)
由于
答案 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]);
}