簡體   English   中英

在 Drupal 中如何使用 .htaccess 從 ?q= 重定向到清理 URL?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM