Mod重写/清理网址问题
我一直在使用drupal 4.7安装多年,并且最近出现了一个问题。也就是说,重写的URL现在正在显示这些字符:?q =在每个drupal生成的URL中,如下所示:http://sitename.com/?q=path/alias,其中之前是:http://sitename.com/path/alias。Mod重写/清理网址问题
我最好猜测为什么会发生这种情况,最近我开始使用一些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>
难道这是问题吗?如果是这样,有关修复的任何想法?
我不认为你的代码段正在造成它。它只从数据库读取;它不会更改URL。 mod_rewrite是否仍然启用?这可能是由于最近对服务器配置的更改造成的。检查phpinfo()
的输出。
顺便说一句,该选项$absolute
为url()
是passed as a separate argument在Drupal 4.7中,$options
阵列不在家。你的电话应该是:
url($path, $absolute=TRUE);
我在想你的干净的网址只是坏了。如果您没有打开干净的网址,则所有网址将显示为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。
进入管理员/设置并确保已打开“清理URL”。
尝试以下操作:
上传未经修改的.htaccess文件到网站的根再次
-
确保你的Apache有可用的mod_rewrite。如果你有shell访问,它是一个Ubuntu/Debian的机器,只是做
a2enmod重写
检查该选项被管理员/设置中启用
-
创建根简单的PHP文件文件夹和类型:
phpinfo();
然后,看看模块是否工作。
如果您对该代码发表评论,它会停止执行吗?这将是验证它是否导致它的最好方法。 – 2009-05-04 16:43:00
也请确保你没有使用.htaccess。你的代码看起来不像应该添加?=给我。 – easel 2009-05-04 16:53:05
感谢您的想法,如果没有其他事情发生,请尝试... – 2009-05-04 17:34:00