簡體   English   中英

htaccess 將規則從“example.com/de/foo”重寫為“example.de/foo”

[英]htaccess Rewrite rule from "example.com/de/foo" to "example.de/foo"

RewriteRules 對我來說太痛苦了,我無法讓它工作。 我必須將example.com/de/anypath之類的網址重定向到example.de/anypath

[anypath] 可以是任何路徑,因為我必須讓它在example.com/de/articles/programming/hello-world (將被重定向到example.de/articles/programming/hello-world )以及例如 example.com/de/events/pic-nic (將被重定向到example.de/events/pic-nic )。

這是我到目前為止寫的:

 RewriteRule "^/de/(.*)$" "http://example.de/$1" [R=301,NC,L]
  • 我也試過 RewriteCond 沒有更多的運氣

    RewriteCond %{HTTP_HOST} http://example.com/de
  • 我正在使用 xampp,但在我的 web 服務器上進行了測試,結果相同。

  • 我知道這個.htaccess文件正在工作(如果我輸入錯字會出錯)

  • 我在用類似的東西測試時得到了一些結果:

     RewriteRule "^(.*)$" "https://google.com" [R=301,NC,L]

任何幫助,將不勝感激 !

 RewriteRule "^/de/(.*)$" "http://example.de/$1" [R=301,NC,L]

.htaccess中,與RewriteRule模式匹配的 URL 路徑不以斜杠開頭。 IE。 它應該是"^de/(.*)$" ,而不是"^/de/(.*)$"

您不需要雙引號並且NC標志可能是多余的,除非您還需要匹配dEEdDE

例如(靠近根.htaccess文件的頂部):

RewriteRule ^de/(.*) http://example.de/$1 [R=301,L]

(HTTP,不是 HTTPS?!)

RewriteRule模式中的尾隨$也是多余的。

首先使用 302(臨時)重定向進行測試,以避免潛在的緩存問題。

 RewriteCond %{HTTP_HOST} http://example.com/de

Host HTTP 請求 header(即HTTP_HOST服務器變量的值)僅包含主機名 例如。 example.com僅在您的示例中。

任何以HTTP_為前綴的服務器變量都指的是同名的 HTTP 請求 header。

我在用類似的東西測試時得到了一些結果:

 RewriteRule "^(.*)$" "https://google.com" [R=301,NC,L]

小心測試 301,因為它們由瀏覽器持久緩存。 在測試之前,您需要清除瀏覽器緩存!

我添加了兩個條件(第一個是根據本地或現場申請,第二個保持節點路徑不變):

RewriteCond %{HTTP_HOST} local.example.com
RewriteCond %{REQUEST_URI} !^.*/de/node/.*$

它正在按預期工作。 再次感謝。

暫無
暫無

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

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