วิธีทำ clean url บน drupal 6

drupal-icon-3d-small
clean url ของ drupal มีประโยชน์ก็เพื่อทำให้ url นั่นอ่านง่ายขึ้นจากปกติจะมี ? อยู่ใน url เช่น

https://killthewhat.com/drupal/?q=admin/settings/clean-urls

เมื่อใช้ Clean URL ก็จะเป็น

https://killthewhat.com/drupal/admin/settings/clean-urls

โดยเมื่อตอนติดตั้ง drupal ครั้งที่แล้วผมได้ติดในเรื่องนี้ไว้ดังภาพ

ซึ่งวิธีแก้ไขก็ไม่ยากครับให้เราเข้าไปแก้ไขไฟล์ .htaccess ในที่เราติดตั้ง drupal เอาไว้ (ใครไม่มี .htaccess ให้สร้างเองได้ครับ) เช่น /httpdocs หรือ /httpdocs/drupal เป็นต้น และใส่ค่านี้ลงไปครับทับของเดิม

#
# Apache/PHP/Drupal settings:
#

# Protect files and directories from prying eyes.
<FilesMatch "(\.(engine|inc|install|module|sh|.*sql|theme|tpl(\.php)?|xtmpl)|code-style\.pl|Entries.*|Repository|Root)$">
  Order deny,allow
  Deny from all
</FilesMatch>

# Set some options.
Options -Indexes
Options +FollowSymLinks

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1
<IfModule mod_php4.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
</IfModule>

# PHP 4, Apache 2
<IfModule sapi_apache2.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
</IfModule>

# PHP 5, Apache 1 and 2
<IfModule mod_php5.c>
  php_value magic_quotes_gpc                0
  php_value register_globals                0
  php_value session.auto_start              0
</IfModule>

# Reduce the time dynamically generated pages are cache-able.
<IfModule mod_expires.c>
  ExpiresByType text/html A1
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # If your site can be accessed both with and without the prefix www.
  # you can use one of the following settings to force user to use only one option:
  #
  # If you want the site to be accessed WITH the www. only, adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
  # RewriteRule .* http://www.example.com/ [L,R=301]
  #
  # If you want the site to be accessed only WITHOUT the www. , adapt and uncomment the following:
  # RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
  # RewriteRule .* http://example.com/ [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory and
  # the rewrite rules are not working properly.
  RewriteBase /

  # Rewrite old-style URLs of the form 'node.php?id=x'.
  #RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{QUERY_STRING} ^id=([^&]+)$
  #RewriteRule node.php index.php?q=node/view/%1 [L]

  # Rewrite old-style URLs of the form 'module.php?mod=x'.
  #RewriteCond %{REQUEST_FILENAME} !-f
  #RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteCond %{QUERY_STRING} ^mod=([^&]+)$
  #RewriteRule module.php index.php?q=%1 [L]

  # Rewrite rules for static page caching provided by the Boost module
  # BOOST START
  <IfModule mod_mime.c>
  AddCharset utf-8 .html
  </IfModule>
  RewriteCond %{REQUEST_URI} !^/cache
  RewriteCond %{REQUEST_URI} !^/user/login
  RewriteCond %{REQUEST_URI} !^/admin
  RewriteCond %{HTTP_COOKIE} !DRUPAL_UID
  RewriteCond %{REQUEST_METHOD} ^GET$
  RewriteCond %{QUERY_STRING} ^$
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0/%{REQUEST_URI} -d
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0/%{REQUEST_URI}/index.html -f
  RewriteRule ^(.*)$ cache/%{SERVER_NAME}/0/$1/index.html [L]
  RewriteCond %{REQUEST_URI} !^/cache
  RewriteCond %{REQUEST_URI} !^/user/login
  RewriteCond %{REQUEST_URI} !^/admin
  RewriteCond %{HTTP_COOKIE} !DRUPAL_UID
  RewriteCond %{REQUEST_METHOD} ^GET$
  RewriteCond %{QUERY_STRING} ^$
  RewriteCond %{DOCUMENT_ROOT}/cache/%{SERVER_NAME}/0/%{REQUEST_URI}.html -f
  RewriteRule ^(.*)$ cache/%{SERVER_NAME}/0/$1.html [L]
  # BOOST END

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

# $Id: boosted.txt,v 1.4 2006/12/05 10:39:19 arto Exp $

*** โดยให้แก้ไข RewriteBase / ไปเป็น RewriteBase /drupal ถ้าใครติดตั้ง drupal เป็น subdirectory ***
ซึ่งถ้า hosting นั้นรองรับ mod_rewrite เราก็จะสามารถแก้ไขให้ clear url เป็น enable ได้ โดยให้ไปที่ Administrator >> Site configuration >> Clean URLs แล้วปรับเป็น Enabled ดังรูปจากนั้นกด Save Configuration
drupal

เพียงเท่านี้ url ของเราก็จะไม่มี ? แล้วส่วนใครที่ ติดตั้ง drupal ผ่าน Plesk Control Panel ก็สบายเลยครับเพราะไม่ต้องทำไรมากเพียงแค่เข้าไป Administrator >> Site configuration >> Clean URLs เพื่อปรับให้เป็น Enable ก็เพียงพอแล้ว

via : http://drupal.org/node/121834

บทความแนะนำ
  • http://mini-shop.info Eason

    ขอบคุณมากครับ หา .htaccess ตั้งหลายบล็อก ทำได้ซะที

  • alandoland

    She said some people told her that agreeing to a second wife would secure her place in heaven. But Sharifah, the breadwinner for her two children ccie and jobless husband, refused to give in. The couple underwent marriage counselling and Sharifah's husband has promised not to marry the other woman.

blog comments powered by Disqus