簡體   English   中英

.htaccess中的子域和路徑的RewriteCond問題

[英]RewriteCond issue with subdomains and paths in .htaccess

根據語言(由qTranslate插件管理),我有三個不同的域指向同一WordPress的主機實例:

RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.cat$
RewriteRule ^/?$ "http\:\/\/ca\.mydomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$
RewriteRule ^/?$ "http\:\/\/en\.mydomain\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.es$
RewriteRule ^/?$ "http\:\/\/es\.mydomain\.com\/" [R=301,L]

這樣,我設法實現了以下重定向:

  • mydomain.cat或www.mydomain.cat ---> ca .mydomain.com --->顯示加泰羅尼亞語的網站
  • mydomain.es或www.mydomain.es ---> es .mydomain.com --->以西班牙語顯示網站
  • mydomain.com或www.mydomain.com ---> en .mydomain.com --->以英文顯示網站

現在我遇到的麻煩是,例如,用戶鍵入mydomain.cat/work不能正常工作,它轉到mydomain.com/work/,子域中的語言部分丟失了。 如果那樣的話,它將重定向到ca.mydomain.com/work,那將是完美的。

我已經研究並嘗試修改三個RewriteCond規則,以在URL的末尾“添加”其他內容(不知道使用QUERY_STRING或使用參數是否更好),但是存在,但是我無法獲取工作正常,但我不知道這是否是實現此目標的最佳方法。

任何人都可以幫助我或提供提示嗎?

好的,我可以正常工作了:

RewriteEngine On
Options +FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.cat$
RewriteRule (.*) "http\:\/\/ca\.mydomain\.com\/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$
RewriteRule (.*) "http\:\/\/en\.mydomain\.com\/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.es$
RewriteRule (.*) "http\:\/\/es\.mydomain\.com\/$1" [R=301,L]

我在RewriteRule語句的末尾添加了$ 1,並以(。*)開頭改寫了^ /?$。 我還在其他兩行之上添加了這兩行:

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

防止尾隨斜杠。 我希望這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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