我多年来一直使用drupal 4.7安装,并且最近出现了问题。也就是说,重写的URL现在显示以下字符:?q =在每个drupal生成的URL中,如下所示:http://sitename.com/?q=path/alias,之前的位置为:http://sitename.com/path/alias。
我最好猜测为什么会发生这种情况,我最近开始使用一些PHP代码在几个侧面块中添加特定于上下文的链接样式。这是代码:
<?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 :(得分: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已打开干净的网址。
答案 1 :(得分:1)
进入管理员/设置并确保已启用“清除网址”。
答案 2 :(得分:0)
我认为你的代码片段没有引起它。它只从数据库中读取;它不会对URL进行更改。 mod_rewrite仍然启用吗?这可能是由最近更改服务器配置引起的。检查phpinfo()
的输出。
顺便说一下,$absolute
的选项url()
在Drupal 4.7中是passed as a separate argument,而不在$options
数组中。你的电话应该是:
url($path, $absolute=TRUE);
答案 3 :(得分:0)
尝试以下方法:
将未经修改的.htaccess文件再次上传到网站的根目录
确保您的apache有mod_rewrite可用。如果你有shell访问权限并且它是Ubuntu / Debian机器,那就做吧
a2enmod重写
检查是否在admin / settings上启用了该选项
在根文件夹上创建一个简单的.php文件,然后键入:
的phpinfo();
然后看模块是否正常工作。