2014-03-30 70 views
0

我已经使用.htaccess重写了我的URL,并且所有内容都可以正常工作,但是没有找到所选文章的ID。重写的URL没有拾起ID PHP

我的网址已经从http://www/website.co.uk/news.php?id=111111使用改为http://www.website.co.uk/news/111111

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^id=(.*)$ 
RewriteRule ^news.php$ /news/%1? [L,R] 

然而,news.php页面内我抓住的ID号码使用:

if(isset($_GET["id"])){ 
$id = $_GET["id"]; 
} 
else{ 
header("Location: redirect.php?type=error"); 
exit(); 

所以,当我现在运行的页面,它会重定向到redirect.php页面,因为它不是获取ID。我怎样才能排序这个错误?

+0

你需要做更多的调试不仅仅是让它重定向到错误页面。看看$ _GET里面有什么,所以你可以看看数组是否为空。把'print_r($ _ GET); exit;'放在页面顶部。当你访问你的URL时,你将能够看到阵列中的内容。如果你使用干净的URL,你的写作也不会看起来像。它看起来倒退了。 –

+0

打印输出只是'Array()' – user3177012

回答

0

您已经编写了一个外部重定向,它将用户的浏览器指向http://www.website.co.uk/news/111111。这就是您的服务器将会看到的URL - 因此,URL中没有ID参数。你要一个多行添加到您.htaccess在内部重写URL到老(参数化)之一:

RewriteRule ^news/([0-9]+) news.php?id=$1 [QSA] 

用户仍然会看到不带参数的重写URL,但你的PHP脚本将得到旧的(news.php?id=111111)。

+0

谢谢,我可以看到你的意思,但不幸的是,上面的脚本仍然重定向到错误页面 – user3177012

+0

嗯,我想知道为什么你的服务器委托给news.php的请求所有。因为在URL“/ news/111111”中只有一个目录“新闻”。你有没有发布完整的'.htaccess'? 尝试在'.htaccess'顶部添加'Options -MultiViews'。如果这也失败了,您仍然可以使用基于重写URL的Shane Reeves解决方案,但需要在提取请求的脚本中执行更多工作。 – Callidior

0

尝试使用PHP的preg_split()方法将URI拆分为可用值。

<?php 
define('APPLICATION_URL', 'http://website.co.uk/'); 
$url = str_replace(APPLICATION_URL, null, $_SERVER['REQUEST_URI']); 
$urlData = preg_split('/[\/\?]/', $url); 
echo $urlData[0] . '/' . $urlData[1]; 
?> 

上面的代码应该输出:news/111111

祝你好运!

0

下应该工作

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^id=(.*)$ 
RewriteRule ^news.php$ /news/%1? [L,R] 

RewriteRule ^news/(.*) news.php?id=$1 [QSA] 

第二RewriteRule应该静静重写URL回到原来的URL,这样用户仍然可以看到news/11111,但你的PHP页面应该拿起id值。

编辑:试试这个

RewriteEngine On 
#External redirect with THE_REQUEST trick; change R to R=301 when everything works correctly 
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /news\.php\?id=(.*)\ HTTP 
RewriteRule^/news/%2\? [R,L] 

#Internal rewrite 
RewriteRule ^news/(.*) /news.php?id=$1 [L] 
+0

谢谢,但这是行不通的 - URL重定向到/ news/111111完美,但它不会让脚本拿起ID。我真的希望我能得到这个工作 – user3177012

+0

对不起,尝试我编辑的代码。 – Howli

+0

不,页面仍然重定向到错误页面 - 我从新闻页面取出了GET PHP脚本,并且URL重定向到了website.co。uk/news/GET' – user3177012