我一直在搜索整个网络,并且还没有找到任何解决此问题的方法。我希望你能对这种情况有所了解。使用.htaccess隐藏URL关键参数
我有我的索引文件中设定了这样的:
<header></header>
<div id="main">
<?php
if(isset($_GET["p"])) $p = $_GET["p"];
else $p = "home";
if(file_exists("pages/{$p}.php")) include("pages/{$p}.php");
?>
</div>
这让我载入我的网页有?p=contact
HREF。
说我想显示一个用户配置文件。然后,我会在我的“pages”文件夹中创建一个子文件夹,从而制作相对路径pages/users/profile.php
,因此是href ?p=users/profile&uid=5
。但是,这留下了一个丑陋的URL(以及SEO评级)。
我该如何将该URL改写为/users/profile/5
?
编辑: 我试过以下,导致HTTP 500:
RewriteRule ^([^/]*)/([^/]*)$ /?p=$1&uid=$2 [L]
编辑:我的.htaccess文件,直接位于根文件夹中:http://pastie.org/2268239
线338是我想要达到的目标(现在只是一个评论)。
Apache的错误日志说错误500的原因是什么? – LazyOne
@LazyOne由于可能的配置错误,请求超出了10个内部重定向的限制。 – zykadelic
这意味着你的规则(如果它只有一个;如果更多 - 那么它们的组合)会创建无限的重写周期,Apache必须强行中止。你必须添加能够打破这种循环的条件(例如,在你的规则之前添加'RewriteCond%{REQUEST_FILENAME}!-f'),但这只是一个疯狂的猜测,因为我不知道所有细节)。如果这不起作用 - 那么我强烈建议启用重写调试('RewriteLogLevel 9')并检查重写日志以查看导致它的规则。否则提供更多的细节(你当前的htaccess,它的位置等)。 – LazyOne