重定向到父文件夹,因为子文件夹不可用(在 Joomla 网站上)

问题描述 投票:0回答:1

我想使用

.htaccess
文件将请求重定向到父文件夹,因为请求的路径 (URL) 的一部分不再可用。我成功地为一个简单的基于 HTML 的网站做到了这一点。但是,我想在使用
Joomla 4
构建的网站上实现此功能。我在 Joomla 实施上的所有试验都失败了。

我想我需要一个将用户“重定向”到新页面的解决方案。换句话说,当用户在地址栏中输入<something>/parent/child/<something_else>

时,浏览器应该将请求重定向到地址栏。
基于 Joomla 的网站有 2 级元素分类。我想取消发布第二级。

当前路径:

https://example.com/parent/child/abc.html

我想通过删除 <something>/parent/<something_else>

来重写具有

child

 的 URL(如上所示)(见下文。)
所需路径:
https://example.com/parent/abc.html

如果网站是一个简单的基于 HTML 的网站,使用下面的解决方案,浏览器会显示用户在地址栏中输入的 URL,但会获取 child

重定向到的 HTML 页面。这还不错,但我的网站不是基于静态 HTML 的网站!

但是,如果结构是基于 Joomla 的网站,则使用下面的解决方案,浏览器会显示用户在地址栏中输入的 URL,并且无法获取 
RewriteRule

重定向到的 HTML 页面。我认为发生这种情况是因为用户在地址栏中输入的 URL 不存在。

有没有办法重定向到浏览器地址栏上显示的新 URL?


RewriteRule
    

这应该可以完成工作:
.htaccess joomla
1个回答
0
投票
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} ^.*/parent/child/.+$ RewriteRule ^(.*)parent.*?([^/]+)$ $1parent/$2 [L]

我建议在测试期间使用
RewriteEngine on
RewriteRule ^/?parent/child/(.*)$ /parent/$1 [L,R=301]
。如果一切正常,请使用

R=302

R=301

字符串/行的开头

^
字符串/行的结尾
$
一次或没有一次 - 这里与
?
相关
/
匹配任何字符(贪婪)- 尽可能多地匹配
.*
捕获组 - 将多个字符视为一个单元
()
替换为与捕获组匹配的文本

© www.soinside.com 2019 - 2024. All rights reserved.