在Drupal中如何使用.htaccess从?q =重定向到干净的URL?

时间:2017-01-31 12:11:14

标签: .htaccess redirect drupal

请在标记为重复之前仔细阅读。

我正在管理一个drupal网站,并且我被要求清理网址。

所以我创建了.htaccess文件并启用了干净的URL,如drupal文档中所述。这一切都很简单,工作正常。

问题在于手动添加了数千个实习生链接(包含讨厌的?q=,以前的网站管理员有点......)。

我不想编辑所有这些网站太多了。 这就是为什么我更愿意添加2或3 .htaccess行。

重定向的一个例子是:

http://www.tuteorica.com/?q=galeria/via/clases
to
http://www.tuteorica.com/galeria/via/clases

到目前为止,我有这个.htaccess文件:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

#RewriteCond %{QUERY_STRING} ^q=(.*=)$
#RewriteRule ^ http://www.%{HTTP_HOST}/%1 [R=301,L]

#RewriteCond %{query_string} q=(.*)
#RewriteRule ^$ /%1? [R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L,QSA] 

评论的行是我试图做的工作。它甚至可能吗?我在正确的方向吗?

我知道这不是最佳解决方案,我只是想让它发挥作用。

1 个答案:

答案 0 :(得分:2)

您可以使用以下htaccess

RewriteEngine on
#non www to www
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [NE,L,R]
#/?q=foobar to /foobar

RewriteCond %{THE_REQUEST} /\?q=([^\s]+) [NC]
RewriteRule ^ /%1? [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /?q=$1 [L]