這工作正常:
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
似乎給我帶來了問題,重寫模組已開啟。
P粉1808446192023-09-12 00:18:54
由於請求的 URL 中不存在 0204
(MMDD) 部分,因此您需要對其進行硬編碼。幸運的是,任何一年只有一個 MMDD。
如果您有權存取伺服器配置,那麼您可以實作一個包含一對一映射的 RewriteMap
- 然後可以在 .htaccess
中找到該映射.
否則,您可以在 .htaccess
中執行類似以下操作:
RewriteCond -0202 2019-(\d{4}) [OR] RewriteCond -0201 2020-(\d{4}) [OR] RewriteCond -0206 2021-(\d{4}) [OR] RewriteCond -0205 2022-(\d{4}) [OR] RewriteCond -0204 2023-(\d{4}) RewriteRule ^(\d{4})/not-the-dinner-day-photographs/?$ archive/galleries//%1_ntdd/index.php [NC,L]
前面的條件包含 YYYY 到 MMDD 的一對一映射。 $1
是從RewriteRule
pattern 捕獲的4 位數字年份,然後CondPattern 從< em>TestString
%1 反向引用檢索的。
旁白:但是,您的原始規則存在一些潛在的 SEO 問題:
問題。如果有可能同時收到兩個 URL(有或沒有尾部斜線),那麼理想情況下您應該從一個 URL 重定向到另一個 URL(無論規範如何)。
您允許不區分大小寫的匹配。同樣,這可能會導致< /a>重複內容