![](/img/trans.png)
[英]how to redirect from unclean url to clean url using htaccess file
[英]In Drupal how to redirect from ?q= to clean URL using .htaccess?
在标记为重复之前,请仔细阅读。
我正在管理一个 drupal 站点,我被要求使 URL 干净。
因此,我创建了.htaccess
文件并按照 drupal 文档中的描述启用了干净的 URL。 这一切都很简单,而且效果很好。
问题是手动添加了数千个实习链接(包含讨厌的?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]
注释行是我正在努力工作的行。 甚至有可能吗? 我是在正确的方向吗?
我知道这不是最好的解决方案,我只是想让它起作用。
您可以使用以下 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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.