![](/img/trans.png)
[英]Redirect old URLs from example.com/foo to example.com/foo.php using .htaccess?
[英]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
標志可能是多余的,除非您還需要匹配dE
、 Ed
或DE
。
例如(靠近根.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.