我知道有關于這個主題的文章,但我無法讓 htaccess 規則起作用。好吧,它有效,但前提是 PDF 位于特定檔案夾中。
這就是我想要做的:如果有人沒有 wordpress_logged_in cookie 并且他們嘗試查看 pdf 或 ppt,那么我們將他們重定向到登錄頁面。
這是我當前的 htaccess :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteCond %{HTTP_COOKIE} !wordpress_logged_in [NC]
RewriteRule ^wp-content/uploads/. ?\.(pdf|ppt)$ wp-login.php?redirect_to=/ [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
它不起作用。
如果我嘗試訪問 /uploads/2022/05/blabla.pdf 而不是 /wp-content/uploads/2022/05/blabla.pdf,下一個有效
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteCond %{HTTP_COOKIE} !wordpress_logged_in [NC]
RewriteRule (^|/)uploads/. ?\.(pdf|ppt)$ wp-login.php?redirect_to=/ [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
為什么如果我添加“^wp-content/”它根本不起作用?
編輯: /wp-content/ 中還有另一個 .htaccess 可能有沖突?
# BEGIN WebP Converter
# ! --- DO NOT EDIT PREVIOUS LINE --- !
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads-webpc/$1.jpg.webp -f
RewriteRule (. )\.jpg$ /wp-content/uploads-webpc/$1.jpg.webp [NC,T=image/webp,L]
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads-webpc/$1.jpeg.webp -f
RewriteRule (. )\.jpeg$ /wp-content/uploads-webpc/$1.jpeg.webp [NC,T=image/webp,>
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads-webpc/$1.png.webp -f
RewriteRule (. )\.png$ /wp-content/uploads-webpc/$1.png.webp [NC,T=image/webp,L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "(?i)\.(jpg|jpeg|png)(\.(webp|avif))?$">
Header always set Cache-Control "private"
Header append Vary "Accept"
</FilesMatch>
</IfModule>
# ! --- DO NOT EDIT NEXT LINE --- !
# END WebP Converter
uj5u.com熱心網友回復:
編輯: /wp-content/ 中還有另一個 .htaccess 可能有沖突?
中的 mod_rewrite 指令/wp-content/.htaccess將完全覆寫父.htaccess檔案中的 mod_rewrite 指令。甚至不處理父.htaccess檔案中的 mod_rewrite 指令(和您的重寫)。
您需要(為了便于實施):
/wp-content/.htaccess重復檔案頂部的規則(行前# BEGIN WebP Converter) - 盡管需要相應地調整它。例如:RewriteCond %{HTTP_COOKIE} !wordpress_logged_in [NC] RewriteRule ^uploads/. \.(pdf|ppt)$ /wp-login.php?redirect_to=/ [R,L]請注意,
RewriteRule模式現在開始^uploads,而不是^wp-content替換字串以斜杠為前綴。不需要非貪婪的量詞。
.(而不是. ?)就足夠了。將
/wp-content/.htaccess檔案的內容移動到父配置中 - 進行必要的調整。(盡管這可能還需要自定義“WebP 插件”。)/wp-content/.htaccess在(或 root.htaccess)檔案中啟用 mod_rewrite 繼承。但這確實使事情復雜化,需要重寫指令來解決這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484495.html
下一篇:內容安全策略無效字符
