簡體   English   中英

將所有子 url 重定向到主 url

[英]redirect all sub url to primary url

我有一個在 apache 上運行的 wordpress 站點。 我需要將domain.com/examplepage/*重定向到domain.com/examplepage

舉個例子

domain.com/examplepage/randomstring/randomstring世界轉到domain.com/examplepage

我試圖谷歌如何做到這一點,但找不到辦法。 我確定這是因為我只是不知道如何搜索正確的東西。 我願意使用 wordpress 插件、.htaccess 或 apache 配置。 什么都行。

好吧,你可以在 SO 上看到很多很多答案。 您是否檢查了此處右側的“相關”部分?

無論如何,這就是您可能正在尋找的內容:

RewriteEngine on
RewriteRule ^/?examplepage/.+ /examplepage [END]

以上實現了內部重寫。 如果您真的想要外部重定向,這將是變體:

RewriteEngine on
RewriteRule ^/?examplepage/.+ /examplepage [R=301]

最好從 302 臨時重定向開始,然后在確定一切設置正確后才將其更改為 301 永久重定向。 這可以防止在嘗試時出現緩存問題......

如果您使用上述規則收到內部服務器錯誤(http 狀態 500),那么您可能運行的是非常舊版本的 apache http 服務器。 在這種情況下,您將在 http 服務器錯誤日志文件中看到不支持的[END]標志的明確提示。 您可以嘗試升級或使用舊的[L]標志,在這種情況下它可能會起作用,盡管這有點取決於您的設置,當然您需要添加另一個重寫條件來打破無休止的重寫循環。

此實現將在 http 服務器主機配置或分布式配置文件(“.htaccess”文件)中類似地工作。 顯然重寫模塊需要在http服務器中加載並在http主機中啟用。 如果您使用分布式配置文件,您需要注意在主機配置中完全啟用它的解釋,並且它位於主機的DOCUMENT_ROOT文件夾中。

還有一個一般性的評論:你應該總是喜歡將這樣的規則放在 http 服務器主機配置中,而不是使用分布式配置文件(“.htaccess”)。 那些分布式配置文件增加了復雜性,通常是意外行為的原因,難以調試,而且它們確實降低了 http 服務器的速度。 它們僅在您無法訪問真正的 http 服務器主機配置(閱讀:非常便宜的服務提供商)或堅持編寫自己的規則的應用程序(這是一個明顯的安全噩夢)的情況下作為最后一個選項提供。

暫無
暫無

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

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