2013-03-21 106 views
1

我已经搜索了该网站,并获得足够的地方,我已经成功地重写到一个干净的URL。只需要更多的帮助。使用下面的URL Rewrite rewrite x.php?id = 1

domain/record.php?id=1685 > to > domain/record-Gavin-Rees-1685

我有,我已经成功地改写到一个干净的URL像这样记录页面

.htaccess文件:

RewriteRule ^record-(.*)-(.*)$ /record.php?id=$2 [L] 

这在我php文件:

$temp=str_replace(' ','-', $record [record_name]); 
$temp=str_replace('.','', $temp); 

<a href='/record-". $temp ."-".$record[id]." '> 

这工作完美。问题是。

我不能让它改写其他的方式,所以如果你直接去:

/record.php?id=1685 it still exists. i tried > RewriteRule ^record.php?id=$ /record-(.*)-(.*)$ [R,L] 
+2

您无法添加您没有的信息。 mod_rewrite没有办法知道对于ID 1685,这些空白应该填充“Gavin”和“Rees”。在您的第一种情况下,您只使用原始请求网址中的信息,这就是它工作的原因。 – Adrian 2013-03-21 16:40:15

+0

正确,这就是为什么你应该在脚本中处理它。找出最初请求脚本的方式(查看$ _SERVER) - 然后如果它被称为“错误”的方式,请在数据库中查找必要的数据,并使用Location标题将客户端重定向到所需的URL。 – CBroe 2013-03-21 16:42:59

+0

对不起,我没跟着。 – MichaelQ 2013-03-21 16:43:07

回答

0

这是不可能的.htacces重写规则,因为你无法定义的一般规则,知道你的软件内部。如果你想在你的.htaccess文件中这样做,你必须为每一个id创建一个规则,这会导致一个非常大而且不方便的.htaccess文件。

获得直接脚本调用重定向的更好的方法是,在php文件本身中进行重定向并设置http状态代码(即301--永久移动)。 获取请求的网址,您可以使用$_SERVER['REQUEST_URI']并在开始时检查/record.php