2009-05-04 133 views
0

我一直在使用drupal 4.7安装多年,并且最近出现了一个问题。也就是说,重写的URL现在正在显示这些字符:?q =在每个drupal生成的URL中,如下所示:http://sitename.com/?q=path/alias,其中之前是:http://sitename.com/path/aliasMod重写/清理网址问题

我最好猜测为什么会发生这种情况,最近我开始使用一些PHP代码在几个sideblocks中添加特定于上下文的链接样式。下面的代码:

<?php $alias= $_GET['q']; ?> 

<a <?php $pos=strpos($alias,"1234"); // node number 
if(!$pos == false) { 
echo 'style="color:black"'; 
} ?> href="internal/link/alias">Internal Link</a> 

或者更近:

<?php $path = isset($_GET['q']) ? $_GET['q'] : '<front>'; 
$alias = url($path, array('absolute' => TRUE)); ?> 

<a <?php $pos=strpos($alias,"internal/link/alias"); 
if(!$pos == false) { 
echo 'style="color:black"'; 
} ?> href="internal/link/alias">Internal Link</a> 

难道这是问题吗?如果是这样,有关修复的任何想法?

+0

如果您对该代码发表评论,它会停止执行吗?这将是验证它是否导致它的最好方法。 – 2009-05-04 16:43:00

+0

也请确保你没有使用.htaccess。你的代码看起来不像应该添加?=给我。 – easel 2009-05-04 16:53:05

+0

感谢您的想法,如果没有其他事情发生,请尝试... – 2009-05-04 17:34:00

回答

0

我不认为你的代码段正在造成它。它只从数据库读取;它不会更改URL。 mod_rewrite是否仍然启用?这可能是由于最近对服务器配置的更改造成的。检查phpinfo()的输出。

顺便说一句,该选项$absoluteurl()passed as a separate argument在Drupal 4.7中,$options阵列不在家。你的电话应该是:

url($path, $absolute=TRUE); 
1

我在想你的干净的网址只是坏了。如果您没有打开干净的网址,则所有网址将显示为http://example.com/?q=/foo/bar/baz。重写规则将请求从http://example.com/foo/bar/baz转换为http://example.com/?q=/foo/bar/baz以在内部处理。

您需要返回并确保您的重写规则仍然有效(您甚至可以去http://example.com/foo/bar/bazz?),并且Drupal打开了干净的URL。

1

进入管理员/设置并确保已打开“清理URL”。

0

尝试以下操作:

  1. 上传未经修改的.htaccess文件到网站的根再次

  2. 确保你的Apache有可用的mod_rewrite。如果你有shell访问,它是一个Ubuntu/Debian的机器,只是做

    a2enmod重写

  3. 检查该选项被管理员/设置中启用

  4. 创建根简单的PHP文件文件夹和类型:

    phpinfo();

然后,看看模块是否工作。