我想使用
.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
但是,如果结构是基于 Joomla 的网站,则使用下面的解决方案,浏览器会显示用户在地址栏中输入的 URL,并且无法获取
RewriteRule
重定向到的 HTML 页面。我认为发生这种情况是因为用户在地址栏中输入的 URL 不存在。 有没有办法重定向到浏览器地址栏上显示的新 URL?
RewriteRule
这应该可以完成工作: 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
字符串/行的开头
^
字符串/行的结尾$
一次或没有一次 - 这里与?
相关
/
匹配任何字符(贪婪)- 尽可能多地匹配.*
捕获组 - 将多个字符视为一个单元()
替换为与捕获组匹配的文本