无法从子目录中的WordPress基本URL中删除尾随斜杠

46qrfjad  于 2023-04-20  发布在  WordPress
关注(0)|答案(1)|浏览(198)

我在目录www.example.com/blog/中有一个WordPress,它工作正常。所有的URL都以“/”结尾(www.example.com/blog/article/),但我已经从设置/永久链接(www.example.com/blog/article)中更正了它。只有一个URL,我无法设法删除最后的“/”,www.example.com/blog/,我需要它是www.example.com/blog
当我保存在设置/永久链接WordPress修改.htaccess

# BEGIN All In One WP Security
#AIOWPS_BLOCK_SPAMBOTS_START
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^(.*)?wp-comments-post\.php(.*)$
RewriteCond %{HTTP_REFERER} !^http(s)?://(.*)?\.example\.com/blog [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule .* http://127.0.0.1 [L]
</IfModule>
#AIOWPS_BLOCK_SPAMBOTS_END
# END All In One WP Security

# BEGIN WordPress
# Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
# generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
# Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

我已经将RewriteBase /blog/更改为RewriteBase /blog,但这不是解决方案。我不明白为什么WordPress直接使用/blog/而不是/blog生成RewriteBase,因为设置/常规中的站点和WordPress地址是www.example.com/blog
从谷歌Chrome浏览器检查,我看到有一个301重定向从www.example.com/blogwww.example.com/blog/,但我认为这是由WordPress本身完成的。

v09wglhw

v09wglhw1#

这是一个古老的(在网络时代)难题。
如果https://example.com/foo/index.html是Apache或nginx服务器上的实际文件的URL,这意味着https://example.com/foo,奇怪的是,不是也不可能是有效的URL。URLMap到文件名,而foo不是文件名。它是目录名。但Apache和nginx不提供目录内容。另一方面,Web服务器看到https://example.com/foo/,一个丢失的文件名,并替换默认文件名(WordPress世界中的index.php)。
但是,如果每次我们忘记了尾随的/,就会得到404,这会让人发疯。因此,Web服务器通过响应301(永久重定向)响应将浏览器重定向到https://example.com/foo/,包括尾随的/。在页面加载结束时,您将在浏览器位置栏中看到尾随的/
如果你尝试的话,你可以在你的浏览器devtools网络标签中看到它。
所以,我相信你正在尝试做一些在WordPress over Apache或nginx Web服务器世界中无法轻松完成的事情。
其他最近开发的Web服务器软件(node express等)具有更灵活的请求路由(URL路径名解释)功能。但Apache的起源是在Web服务器简单地将本地文件系统Map到URL的日子里。

相关问题