Apache L 和 END 标志根据环境被忽略
Apache L and END flag are ignored depending of the environement
我运行在控制面板上安装 Wordpress,我想使用这个 htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(\/|)\d{4,7} - [L,NC,G]
RewriteRule ^(\/|)\d{4,7} - [END,NC,G]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301,QSD]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
如果我在 cpanel 环境中使用此 htaccess,当我访问 url 时:
https://www.example.com/12345
我得到了 404 而不是 410
如果我 运行 它在干净的环境中使用 linux 交钥匙 : 它工作正常我有一个 410
似乎在 cpanel 环境中 [L] 或 [END] 标志被忽略
尝试将 410 错误文档重置为默认值:
ErrorDocument 410 default
我认为问题与 cPanel 本身无关,但服务器定义的 ErrorDocument 可能会将 410 转换为 404,这在共享服务器环境中并不罕见。
RewriteRule ^(\/|)\d{4,7} - [L,NC,G]
RewriteRule ^(\/|)\d{4,7} - [END,NC,G]
但是同时拥有这两个指令是没有意义的。第二个指令永远不会被处理。
严格来说,G
标志 意味着 L
无论如何。因此,L
标志是多余的。 (与 NC
标志一样。)
但在此上下文中使用 L
或 END
没有区别。
我运行在控制面板上安装 Wordpress,我想使用这个 htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(\/|)\d{4,7} - [L,NC,G]
RewriteRule ^(\/|)\d{4,7} - [END,NC,G]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^.*$ https://www.%1%{REQUEST_URI} [L,NE,R=301,QSD]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
如果我在 cpanel 环境中使用此 htaccess,当我访问 url 时: https://www.example.com/12345 我得到了 404 而不是 410
如果我 运行 它在干净的环境中使用 linux 交钥匙 : 它工作正常我有一个 410 似乎在 cpanel 环境中 [L] 或 [END] 标志被忽略
尝试将 410 错误文档重置为默认值:
ErrorDocument 410 default
我认为问题与 cPanel 本身无关,但服务器定义的 ErrorDocument 可能会将 410 转换为 404,这在共享服务器环境中并不罕见。
RewriteRule ^(\/|)\d{4,7} - [L,NC,G] RewriteRule ^(\/|)\d{4,7} - [END,NC,G]
但是同时拥有这两个指令是没有意义的。第二个指令永远不会被处理。
严格来说,G
标志 意味着 L
无论如何。因此,L
标志是多余的。 (与 NC
标志一样。)
但在此上下文中使用 L
或 END
没有区别。