简洁链接

其实正常情况下,简洁链接是不需要单独设置apache和.htaccess,本页面是遇到问题时来查询使用的。

缺省情况下,Drupal 用内部的路径参数生成URL,这样的结果就是URL看起来象是:"http://www.example.com/?q=node/83."。这使得很多搜索引擎,比如google,在索引这些页面时被挡在门外。你可以告诉Drupal使用“简洁链接”,以去掉内部链接中的“?q=”。注意,这只能在加载了重写模块(rewrite_module)并且在配置中启用重写模式(mod_rewrite)的apache服务器上能正常工作。

有两种方法可以在Apache中启用URL的重写。如果你有Apache服务器的全部权限的话,可以在httpd.conf文件中启用简洁链接。或者参看更有效率和安全(的apache)

警告:如果你的服务器配置不正确时启用了“简洁链接”可能会导致你回不到管理页面来修复你错误的改动。如果你已经在这种状况,你可以直接键入“非简洁链接” http://www.example.com/?q=admin/settings 来回到管理页面。
启用简洁链接需要下面三步:

  1. 启用Apache的重写模式。请咨询主机服务商或查询Apache 文件以了解有关重写模式和如何操作。最少,要确认你的Apache安装中启动了重写模式。它应该被编译进(apache)或被做成可加载的模块。一句话,你可通过在apache的配置文件中引用下面的代码来告诉Apache加载重写模块。
    LoadModule rewrite_module modules/mod_rewrite.so
    AddModule mod_rewrite.c
    

    注意,并不是所有的*nix系统都是这样设置。请查询你的分发版文档中关于apache的部分。我们也建议要禁止Apache 的multiviews功能,因为将会与简洁链接发生冲突。

  2. 编辑站点的Apache配置文件:有关Apache的配置信息一般存放在httpd.conf文件中,一般来说位于 /etc/httpd/conf/httpd.conf ;如果你使用虚拟主机,那么可能会在其它位置,或者你没有权限修改httpd.conf文件时,也可以尝试修改你的drupal安装目录下的.htaccess文件。最主要的配置就是设置重写基点 RewriteBase 。举例来说,如果你的Apache的文件根路径是 /var/www/ (即, /var/www/index.html 是当你浏览http://www.example.com/ 时显示的页面),而你的Drupal安装在子目录 /var/www/mysite/ 下, 那么重写基点就要被设为/mysite 。 在某些情况下,需要在配置文件中设置为
    RewriteBase /
    以使得重写模式可以工作。

    如果你不使用Drupal自带的 .htaccess文件,你就要添加重写规则到你的Apache目录定向(directory directive)中。样例请参考 .htaccess file in Drupal.

      RewriteEngine on
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    

    你也要设置Allow Override 以使.htaccess的命令能够在你的站点上运行,如果你改变了drupal自带的 .htaccess,你应该把它设置为
    AllowOverride All
    以保证重写可以启用。参阅"Behind the scenes with Apache's .htacces" 以总观了解 。.htaccess。 这里有个示例

  3. 设置路径模块。你必须保证Drupal站点上的路径模块(path module)被启用而且正确的配置了权限。你可以在管理>>模块中启用路径模块,把权限设置为管理URL别名创建URL别名管理>>设置中启用简洁链接。首先,看看你是不是能用简洁链接访问到设置页面,键入下面的链接:http://www.example.com/admin/settings ( 用你的主机名替换掉 www.example.com )。 如果没有发生错误,并且这个页面和你点击“管理”然后点击“设置”时的页面相同,那么你就该知道重写规则的设置是成功的,你可以点击“简洁链接”处的 确认选项。如果有问题,你可以查阅卸载简洁链接。如果你还有关于简洁链接的问题 你可以在Drupal的settings.php中设置$conf['clean_url']=1;。

注意:在标准的Drupal安装中, .htaccess文件已经支持简洁链接了。不过很容易在拷贝时漏掉它,因为前面有个“点”

注意 关于MultiViews: Apache web服务器支持的MultiViews,是一种允许你访问页面时不需要文件的扩展名。比如,你有一个叫"evaluation.txt"的文件,在启用MultiViews的站点,你可以用"example.com/evaluation"来访问到这个文件。就已经知道的情况来说,MultiViews这种方便的功能,会在Drupal启用简洁链接时产生问题。除非你确实知道你在做什么,否则你应该在你计划启用简洁链接的drupal站点上禁止MultiViews。幸运的时,MultiViews在Apache的缺省安装时已经被禁止了。查阅Apache文档进一步了解MultiViews的信息。

待补充页面
* Apache 2 configuration of clean URLs on Debian
* Clean URL Support in Abyss
* Clean URL support in XAMPP
* Clean URLs with different webservers
* Example Clean URL configuration of httpd.conf for performance
* Existing URLs for server overwrite Drupal paths
* IIS CleanURLs using some of the available ISAPI filters.
* Using Clean URLs with IIS

原文链接http://drupal.org/node/15365

原先只看到英文的说

原先只看到英文的说明,不太明白。现在好了。谢谢。
另见 http://cobra.javaeye.com/blog/143476