新闻中心

无忧主机原创drupal技术文档翻译:使用Clean URLs(简洁链接)实现Drupal伪静态

作者 / 无忧主机 时间 2012-07-21 06:11:47

无忧主机(www.51php.com)小编应客户需求,将不间断的,尝试翻译一些drupal官方技术文档资料,方便您对该cms系统的学习,欢迎广大drupal爱好者阅读、指导。本文为无忧主机原创翻译技术文档,转载请注明出处。 无忧主机关于drupal伪静态设置的官方英文技术文档译文如下: Drupal默认情况下为网站页面生成的地址看起来像“http://www.51php.com/?q=node/83”。这种类型的地址不仅难以读懂而且会让很多搜索引擎读不到您网站所有页面的索引。研究表明这对搜索引擎来说是一个很大的问题,当然谷歌浏览搜索引擎是没问题的,而且搜索引擎对.html静态文件的收录非常友好,那么我们将含有“?q=node/83”的动态url地址,通过服务器mod_rewrite模块将其伪装成静态页面(.html)输出,这个过程我们称之为伪静态。 如果您对drupal默认的urls不满意,您可以使用“Clean URLs”取消您网页地址中的”?q=”。现在这编文章将会引导您如何开启”Clean URLs”。这编文章很大程度上仅适用于一些流行的unix/linux系统下运行着apache网站服务器,当然还要对apache服务器的mod_rewrite模块进行设置和在httpd.conf配置文件中mod_rewrite开启并进行设置。 在开始Clean URLs之前,我们要做些工作让Clean URLs可以在您的服务器上工作。这个时候我们分两种情况。第一种,您拥有您服务器的最高管理权限,例如:您在您的个人电脑上安装的服务器,或者您有专业服务器的托管账户,这个时候,您可以在httpd.conf文件中开启clean urls以得到更好的效率和安全性。然而,当您使用的是在DreamHost、BlueHost、无忧主机(www.51php.com)等php虚拟主机,您是没有修改服务器httpd.conf(apache配置文件)配置文件的。那么,你需要使用drupal文件根目录的.htaccess文件来达到相同的效果,当前提下,你的所使用的php虚拟主机服务器必须开启mod_rewrite模块。如果你对htaccess(伪静态正则表达式)文件不了解,你可以阅读另一篇专门介绍htaccess的技术文档:“无忧主机原创:手把手介绍什么是.htaccess文件”。 在Drupal上开启简洁链接 注释:在标准的drupal安装中包含了一个样本.htaccess文件,这个文件是已经支持了Clean URLs功能。这个文件因为它命名的特殊性导致它很容易丢失。所以在您试图开启Clean URLs开启之前请确认这个文件是否存在您安装的文件夹之中(.htaccess文件一般在文件夹的根目录)。如果没有.htaccess文件,请参照“无忧主机总结如何新建.htaccess文件的方法”一文自行建立。 Drupal 7.x 在drupal7的版本中,安装drupal 7.x框架核心过程中会测试Clean urls的兼容性做为安装的一部分。如果测试环境兼容性是良好的,开启Clean urls功能会被安装在安装drupal 7.x核心的安装过程中,这个时候我们就不用做过多的操作了。 如果您需要在装配drupal 7.x框架核心后开启Clean urls,当您在Clean urls配置页面配置开启简洁链接(管理员>配>Search and metadata)drupal会自动的进行简洁链接的测试,展示测试结果,并允许您保存配置。 您可以按照如下步骤开启或关闭这项功能: 1:浏览到Clean urls配置页面(管理员>配置>Search and metadata)。 2:等待自动检测运行。 3:按下或者不按下开启Clean urls(简洁链接)的按钮。 4:按下“保存设置” 即使您的Clean urls功能在安装核心的过程中被成功的安装,如果您有一个专业的服务器,您可能还要按照以下的步骤在httpd.conf文件中开启更加有效的重写方法来让Clean urls工作的更加有效率。如果您选择这么做,那么在您工作在您专业的服务器上时,您就要关闭Clean urls(简洁链接)功能。 Drupal 6.x 在drupal 6.x中依然在安装drupal 6.x框架核心过程中检测Clean urls(简洁链接)功能的兼容性,如果在安装drupal 6.x框架核心过程不能正常开启Clean urls( 简洁链接 )功能,您可以参考下面为drupal5.x版本启动开启Clean urls(简洁链接)功能的方法开启drupal 6.x的Clean urls(简洁链接)功能。它们间仅有一个教小的区别:在drupal 6.x版本中在您浏览到Clean urls配置页面时会自动的检测Clean urls功能,并会提供一小段链接地址让您手动的进行测试。 注备:即使您的Clean urls功能在安装核心的过程中被成功的安装,如果您有一个专业的服务器,您可能还要按照以下的步骤在httpd.conf文件中开启更加有效的重写方法来让Clean urls工作的更加有效率。如果您选择这么做,那么在您工作在您专业的服务器上时,您就要关闭Clean urls(简洁链接)功能。 Drupal 5.x 这里将告诉您在drupal 5.x版本中如何正确启动Clean URLs的步骤。 1:登录至Clean urls(简洁链接)管理员接口区域(管理员>站点配置>Clean URLs) 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. ” 3:点击测试Clean URLs(简洁链接)功能的链接在上述段落的末尾。 4:如果第三步测试成功,配置Clean URLs(简洁链接)功能启用并保存配置。如果测试不成功,按照一下步骤配置好您的服务器配置并且再次测试。 错误校正 如果您服务器的不正确配置可能会在您开启Clean URLs(简洁链接)功能后但在浏览器中显示的间接链接又不是完全正确的时候会让您很难回到管理员页面来撤销您的错误配置,因为drupal生成的菜单和链接都有不能正常工作的链接地址。如果您在这个麻烦的境遇中,在drupal4.0版本中您可以通过非简洁链接地址http://www.example.com/?q=admin/settings回到管理员页面,在drupal 5.0和6.0版本中使用http://www.example.com/?q=admin/settings/clean-urls回到管理员配置页面。 当然我们还可以通过在数据库中运行数据库命令来撤销错误配置: Update variable SET value='s:1:"0";' where name='clean_url'; DELETE FROM cache; 此外还此以在../sites/default/目录下的setting.php文件的最下端加入“$conf['clean_url']=0;”来撤销错误的配置。 在专业服务器上通过配置httpd.conf来启用CleanURLs(简洁链接) 1:开apache服务器上开启mod_rewrite。这里我们可以在阅读(http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html)知道更多开启mod_rewrite的资料。至少您需要确定mod_rewrite在您的apache服务器上是开启了的。在apache中测试mod_rewrite是否可以用,您可以在命令框中输入"apache2ct1 -M"来列出您所有的apache模块,另一些系统需要"apachect1 -M"来列出。最后再是确认rewrite_module是否包含在列出的模块列表中。 如果在列出的apache列表中没有包含rewrite_module这个模块,那么您可以选择内建或者是让它作为可装载使用的模块,换句话说,您告诉您的apache服务器通过: LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c 这两行命令代码去装载这个模块。 在您apache配置文件中,如果AddModule mod_rewrite.c已经被注释了,请务必取消注释AddModule mod_rewrite.c,保证模块关联。接下来我们可以在不需要编辑任何文件的情况下,通过我们可以使用命令代码:"a2enmod rewrite"开启这个模块。 注释:当然这些不会作用于所有的操作系统和apache服务器,联系您的软件提供商获取更进一步的信息。 最后记得重启您的apache服务器。 2:确认为您网站工作的apache配置文件。 这个文件可以是httpd.conf,vhost.conf或者apache2.conf。它们通常在/etc/httpd/conf,/etc/apache2,或者是子目录。如果还是找不到请用fint /etc -name httpd*命令进行查询。 3:复制下列文件到您的apache配置文件中。 <Directory /var/www/example.com> RewriteEngine on RewriteBase / RewriteCond%{REQUEST_FILENAME} !-f RewriteCond%{REQUEST_FILENAME} !-d RewriteRule^(.*)$ index.php?q=$1 [L,QSA] </Directory> 当然如果您不愿意把把上述代码块复制到您的apache配置文件中,也可以把上述代码块放到drupal的根目录下的.htaccess文件中。做这项操作您需要在apache配置文件中加入 AllowOverride All AccessFileName .htaccess 这两行。 在共享服务上通过配置.htaccess支持Clean URLs 标准的drupal安装中包含了一个样本.htaccess文件,这个文件是已经支持了Clean URLs功能。这个文件因为它命名的特殊性导致它很容易丢失。所以在您试图开启Clean URLs(简洁链接)开启之前请确认这个文件是否存在您安装的文件夹之中(一般在文件夹的根目录)。 Drupal伪静态常规问题 在您网站的.htaccess中apache需要严格的指令规范。.htaccess默认是被关闭的,虽然很多空间主机商会将它设置为开启。在apache的配置文件中加入AllowOverride ALL就是让您的.htaccess能够正常的工作。 检测您的.htaccess是否正确工作的方法就是在.htaccess中加入一段垃圾字符串,然后您在打开您的网站会显示"500 sever error",那.htaccess是正常的为您的网站工作,当然确认后,您要把这段垃圾字符串删掉。 如果在加入垃圾字符串之后并没有出现"500 server error"错误,也就是说您网站下的.htaccess被忽略了,此时,向您的空间服务商请求帮助。或者在apache的配置文件(httpd.conf)开启支持,当然有些空间服务商是支持您自行在控制面板中修改的,所以您先到那是修改一下。 RewriteBase 配置 RewriteBase对您网站来说是一个很关键的配置项。它可以在.htaccess和httpd.conf中配置,这取决于您的正确重写指令放在哪个文件中。默认情况下,RewriteBase在.htaccess中是被注释了的,而且它和其它配置结合起来使用效果非常不错。 如果您在开启Clean URLs中遇到困难,您需要这样进行修改。 打个比方,如果您的网站根目录是/var/public_html/(在您的浏览器中只要输入www.例子.com就能进行访问您的网站),或者您的网站在子目录中/var/public_html/my_site,这样的话RewriteBase就该这么设置:RewriteBase /mysite  或者  Rewrite /。 $base_url 您可以在setting.php文件中手动的设置$base_url变量,当它没有被设置的时候。(http://bugs.php.net/bug.php?Id=19656) drupal多站点配置 RewriteBase仅工作在单站点的服务器上,或者是您的网站是具有相同的子目录域名。 例如: RewriteBase / #会工作在http://www.example.com/ #http://www.example1.com/这样形式的网址中工作正常。 RewriteBase /mysite #会工作在http://www.example.com/mysite #http://www.example2.com/mysite这样形式的网址中工作正常。 当然如果您的网站具有复杂的子目录结构,RewriteBase就如上设置的话是不会起效果。您必须为您的子目录添加一些特别的语言法则。语法如下: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^/mysite/(.*)$   //mysite改成您的域名 RewriteRule ^(.*)$ /mysite/index.php?q=$1 [L,QSA] 之前必须存在重写规则。 对INDEX.PHP进行定位 首先,在您网站的.htaccess找到RewriteRule ^(.*)$ index.php?q=$1 [L,QSA],您要做的就是把这段正则表达式中的index.php换成您安装drupal目录下的index.php的路径(除去基地址)。更进一步说,您网站的主页是http://www.example.com/mysite/,您只要将index.php换成/mysite/index.php。当然如果您的网站是http://www.example1.com/,那么index.php就换成/index.php。当然这只是适合一些服务器配置,并不是所有的服务器都支持这么干。 通过使用路径模块来生产更加简洁的URLs 用简洁链接可以让drupal生成"http://www.example.com/node/83",为了把"node/##"改写成"news/june-1st-news",我们需要使用路径模块详情请查阅(Path: readable URLs http://http://drupal.org/documentation/modules/path)。 译文完。译文来源于drupal官方技术论坛: http://drupal.org/getting-started/clean-urls 无忧主机更多关于drupal基础入门文档,请点击:drupal开源内容管理系统(CMS)学习阅读。 学习Drupal入门技能:无忧主机原创:drupal图文安装教程   纯Linux环境下高端免备案【香港独立IP地址】 php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名

本文地址:https://www.51php.com/drupal/6588.html

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服