我多年来一直使用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>

这可能是问题吗?如果是这样,任何关于修复的想法?

有帮助吗?

解决方案

我认为你的代码片段没有引起它。它只从数据库中读取;它不会对URL进行更改。 mod_rewrite仍然启用吗?这可能是由最近更改服务器配置引起的。检查phpinfo()的输出。

顺便说一句,$absolute选项url() Drupal 4.7中的单独参数,不在$options数组中。你的电话应该是:

url($path, $absolute=TRUE);

其他提示

我认为你干净的网址刚好坏了。如果您没有启用干净的网址,则所有网址都会显示为http://example.com/?q=/foo/bar/baz。重写规则将来自http://example.com/foo/bar/baz 的请求转换为 http://example.com/foo/bar/bazz以在内部进行处理。

您需要返回并确保您的重写规则仍然有效(您甚至可以转到<=>?)并且Drupal已打开了干净的网址。

进入管理员/设置并确保已启用“清除网址”。

尝试以下方法:

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

  2. 确保您的apache有mod_rewrite可用。如果你有shell访问权限并且它是Ubuntu / Debian机器,那就做吧

    a2enmod重写

  3. 检查是否在admin / settings上启用了该选项

  4. 在根文件夹上创建一个简单的.php文件,然后键入:

    的phpinfo();

  5. 然后看模块是否正常工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top