這工作正常:
https://example.com/2023/not-the-dinner-day
使用以下RewiteRule
RewriteRule ^(\d{4})/not-the-dinner-day/?$ archive/reports//ntdd.php [NC,L]
我想取得這個新網址:
https://example.com/2023/not-the-dinner-day-photographs
來自這個舊網址
https://example.com/archive/galleries/2023/20230204_ntdd/
我嘗試過各種方法,包括:
RewriteEngine On RewriteRule ^(\d{4})/not-the-dinner-day-photographs/?$ archive/galleries//_ntdd/ [NC,L]
匹配最後一個資料夾20230204_ntdd
似乎給我帶來了問題,重寫模組已開啟。
由於請求的 URL 中不存在
0204
(MMDD) 部分,因此您需要對其進行硬編碼。幸運的是,任何一年只有一個 MMDD。如果您有權存取伺服器配置,那麼您可以實作一個包含一對一映射的
RewriteMap
- 然後可以在.htaccess
中找到該映射.否則,您可以在
.htaccess
中執行類似以下操作:前面的條件包含 YYYY 到 MMDD 的一對一映射。
$1
是從RewriteRule
pattern 捕獲的4 位數字年份,然後CondPattern 從TestString#它是使用產生的替換字串中的
%1 反向引用檢索的。
旁白:但是,您的原始規則存在一些潛在的 SEO 問題:
問題。如果有可能同時收到兩個 URL(有或沒有尾部斜線),那麼理想情況下您應該從一個 URL 重定向到另一個 URL(無論規範如何)。
問題。如果您確實有混合大小寫的請求,那麼您應該使用外部重定向來規範/更正請求。請參閱以下內容:您允許不區分大小寫的匹配。同樣,這可能會導致重複內容