原文地址:
http://drupal.org/getting-started/clean-urls
一般而言,对网站的每个页面Drupal都会自动生成一个类似于"http://www.example.com/?q=node/83"的路径。这种格式的路径难以阅读,同时也会影响一些搜索引擎对网站的索引。对主流的搜索引擎而言,这也许不会是一个多大的问题,但正如
谷歌站长指导中所申明的那样,启用简洁路径是值得一做的(摘录如下):
如果您决定使用动态网页路径(包含了?字符的路径),必须注意不是每一种搜索引擎的爬虫可以像索引静态网页路径正确的处理动态网页路径。静态网页路径可以保留更少的参数和更少的字符长度。
如果对Drupal默认的路径(比如包含有“?”符号)不是很满意,你可以启用“简洁路径”的功能,这篇文章的主要目的就是教您如何启用这个功能。这篇指导文章针对的是常见的服务器,也就是运行在Unix/Linux上的Apache服务器,同时配置了
mode_rewrite Apache 模块,并且在httpd.conf配置文件中启用了mod_rewrite模块。如果你使用其他类型的服务器,可以看看文章后面的文章链接(就是评论上面的文章链接),也许有其他的指导内容。
在启用简洁路径功能之前,你得先设置一下你的服务器,这样简洁路径才可以正常工作。有两种方法进行设置。如果你运行的是自己的服务器,或者在自己的电脑运行服务器,又或者具有一个服务器的特殊账户,总之你有对服务器的绝对控制权!那你可以直接设置httpd.conf文件启用简洁路径的功能,而且更加的高效和安全。不过,如果你使用的是一个共享的服务器账户(比如购买的虚拟主机之类的,大部分的服务器账户都是这样的),没有权限修改httpd.conf文件,这时可以使用Drupal自带的.htaccess文件启用简洁路径功能。
启用简洁路径功能:
注意:Drupal的标准安装包含了一个.htaccess文件用以启用简洁路径的功能。我们很容易忘记复制.htaccess文件,因为它是以点号开头的,在某些系统是隐藏文件。所以,在启用简洁路径之前,确保这个文件在您的安装目录中。
在Drupal 7启用简洁路径功能:
在安装Drupal 7的过程中,它会先测试你的安装环境是否支持简洁路径。如果安装环境支持简洁路径,它会在安装的过程中启用简洁路径,而不需要额外的设置。
如果你需要在安装之后启用简洁路径,可以访问简洁路径配置界面(Administer > Configuration > Search and metadata),它会自动检查是否支持简洁路径,并且显示消息,你也可以修改和保存自己的配置。
使用以下步骤可以启用或者禁用简洁路径的功能:
1,访问简洁路径配置界面(Administer > Configuration > Search and metadata)
2,等待Drupal检查是否支持简洁路径功能
3,选定或者不选定 启用简洁路径功能 的复选框
4,点击保存设置按钮
即使在安装的过程中或者安装之后启用了简洁路径的功能,你可能更加希望通过设置httpd.conf的方法来启用简洁路径的功能(如果你有修改httpd.conf权限的话~),这样可以使网站的运行更加高效和安全。
在Drupal 6.x中启用简洁路径
在安装Drupal 6的过程中,它会先测试你的安装环境是否支持简洁路径。如果在安装的过程中这个测试的功能没有正确的启用,你可以在安装之后通过下面的指导(Drupal 5中将会提及)来启用简洁路径的功能。和Drupal 5最大的不同是:在你访问简洁路径设置界面的时候,Drupal 6会自动检查是否支持简洁路径,而不是像Drupal 5一样提供一个链接让你自己检查。
同样的建议,即使在安装的过程中或者安装之后启用了简洁路径的功能,你可能更加希望通过设置httpd.conf的方法来启用简洁路径的功能(如果你有修改httpd.conf权限的话~),这样可以使网站的运行更加高效和安全。
在Drupal 5.x中启用简洁路径
下面是在Drupal 5启用简洁路径的关键步骤:
1,访问简洁路径配置界面(Administer > Site configuration > Clean URLs in Drupal 5)
2,查看下面的内容:
This option makes Drupal emit "clean" URLs (i.e. without ?q= in the URL.) Before enabling clean URLs, you must perform a test to determine if your server is properly configured. If you are able to see this page again after clicking the "Run the clean URL test" link, the test has succeeded and the radio buttons above will be available. If instead you are directed to a "Page not found" error, you will need to change the configuration of your server. The handbook page on Clean URLs has additional troubleshooting information. Run the clean URL test.
译文:这个选项可以让Drupal启用简洁路径的功能(在路径中没有?q=)。在启用简洁路径之前,你必须检查你的服务器设置是否支持简洁路径。点击"Run the clean URL test"(运行测试简洁路径)链接之后,如果你可以再次看到这个界面,那就表明支持简洁路径,启用简洁路径的按钮就可以使用了。如果你得到的是一个"Page not found"(“网页没有找到”)错误,那您不得不改变服务器的设置。在网站的手册页有更多关于启用简洁路径的文章和常见的错误问答(Drupal官网),也可以参考一下。
3,点击"Run the clean URL test"(运行测试简洁路径)链接
4,如果测试通过,勾选启用简洁路径,保存设置。如果测试不通过,可以试试下面的步骤(后面的内容将会提及)修改您的配置,然后再试几次。
在Drupal 5.x之前版本中启用简洁路径
关于Drupal 5之前版本的设置,小白真心不想翻译了~这个太落后于这个大时代了!
在服务器端设置httpd.conf文件用以启用简洁链接,步骤如下:
1,在Apache服务器启用mod_rewrite模块。首先确定是否安装了mod_rewrite模块,然后启用,这个可以询问服务器的管理员,或者查看
相关文档。
2,将配置文件放在正确的位置,这个没有权限的话也需要联系服务器管理员。
3,将下面的设置文本添加到你的配置文件中
<Directory /var/www/example.com>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>
更多内容可以参考《how to include the Drupal directives 》
其实对于主流的Drupal版本(Drupal 7 6 5)而言,可以直接使用Drupal自带的.htaccess文件来启用简洁链接的功能。尤其是在你没有权限修改配置文件(比如虚拟主机用户)或者不想修改httpd.conf文件。更多内容可以参考《
Behind the scenes with Apache's .htaccess 》《
samples of Apache 2 AllowOverride directives》
注意:关于Apache的MultiViews功能。
默认的Apache安装不会启用MultiViews功能,除非你确实知道自己在干什么,否则不要启用启用这个功能。这个功能和Drupal的简洁路径有一点点潜在的冲突,更多内容,可以
查看相关文档。
标准的Drupal安装自动一个.htaccess文件可以确保简洁路径正确的启用。我们很容易忘记复制.htaccess文件,因为它是以点号开头的,在某些系统是隐藏文件。所以,在启用简洁路径之前,确保这个文件在你的安装目录中。
如果您使用了Drupal自带的.htaccess文件,而简洁路径的功能已经无法启用,可以试试下面的方法。如果依旧无法使用,联系服务器管理员哈。
1,检查.htaccess文件是否正确启用
测试方法:胡乱修改.htaccess文件(记得备份!),打断语句,然后访问你的网站,如果返回的是"500 Server Error" ,说明正确启用,然后把文件修改回来。如果你的网站还是正常访问,说明Drupal的.htaccess文件没有正常启用。这时可以联系服务器的管理员,有些主机允许通过后台的管理界面进行设置,所以在麻烦管理员之前可以先看看那里。
2,RewriteBase设置
如果您的服务器的基目录是www文件夹,同时Drupal的index.html也在这个文件夹(就是说你的Drupal安装在这个文件夹)那么默认的 RewriteBase / 可以启用简洁路径;
如果您的服务器的基目录是www文件夹,而Drupal的index.html在www/mysite文件夹(就是说你的Drupal安装在www/mysite文件夹)那么需要将默认的 RewriteBase / 修改为 RewriteBase /mysite 来启用简洁路径;
3,$base_url设置
如果您的setting.php没有设置$base_url变量,可以通过手动设置,参见:http://bugs.php.net/bug.php?id=19656
4,多站点设置
当启用一个站点,或者你的所有站点都在同一个目录,例如:
RewriteBase /
可以确保以下站点正常工作:
http://www.example.com/
http://www.example2.com/
http://www.example3.com/
RewriteBase /mysite
可以确保以下站点正常工作:
http://www.example.com/mysite
http://www.example2.com/mysite
http://www.example3.com/mysite
当然,如果你的站点安装在不同的目录,设置RewriteBase不会正常工作。这是就需要设置一些特殊的规则。比如你的站点安装在如下的目录:
http://www.example.com/
http://www.example.com/mysite
为了确保简洁路径在两个站点都可以使用,你需要添加
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/mysite/(.*)$
RewriteRule ^(.*)$ /mysite/index.php?q=$1 [L,QSA]
这个设置需要添加在已经存在的rewrite规则之前。
5,index.php的文件路径
在Drupal的 .htaccess文件找到如下一行,或者类似的一行:
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
如果你的网站主页路径是 http://example.com/subdir/
你需要吧index.php修改为/subdir/index.php
如果你的网站主页路径是 http://example.com/
你需要吧index.php修改为/index.php
这个设置对某些服务器有用,但不是总是如此。
启用简洁路径之后的路径为 http://www.example.com/node/83
如果你需要像 http://www.example.com/news/june-1st-news 这样的路径可以通过使用path相关的模块实现。
更多的内容参见:
Path module handbook page