如何使用htaccess将/ folder / subfolder显示为/ subfolder /

时间:2018-07-04 22:45:37

标签: .htaccess redirect mod-rewrite url-rewriting rename

我正在尝试执行以下操作...

需要重写,重命名或重定向的原始路径:

http://www.example.com/_plugin/notifications/

收件人:

http://www.example.com/notifications/

通过root htaccess文件...任何帮助将不胜感激!

================================================ ==================

这不起作用:

RewriteEngine On
RewriteRule ^/_plugin/notifications$ /notifications [L]

这也不起作用:

RewriteEngine On
RedirectMatch ^/_plugin/notifications$ /notifications/

这也不起作用:

RewriteEngine On
RewriteRule ^notifications/(.*)$ /notifications$1 [R=301,NC,L]

============================

编辑

在@Starkeen的帮助下-我对此有一些后续问题。

  1. 是否有一种方法可以缩短.htaccess文件,但是如果让我说 文件夹中有多个子文件夹,而不是写1 条件和每个子文件夹的2条规则?
  2. 我如何显示子文件夹的子文件夹?目前正在向我抛出404 ...:(

============

在后续问题#1上仍需要帮助,但我相信我遇到了问题#2。

(我认为)后续问题2的解决方案:

RewriteCond %{THE_REQUEST} /_plugin/notifications/ [NC]
RewriteRule ^_plugin/notifications/(.*)$ /notifications/$1 [L,R]
RewriteRule ^notifications/(.*)$ /_plugin/notifications/$1 [L]

1 个答案:

答案 0 :(得分:1)

您尝试过的所有规则都不正确。 要将/folder/subfolder重定向到/root/subfolder,您需要一个永久的301重定向规则,如下所示:

RewriteEngine on

RewriteCond %{THE_REQUEST} /folder/subfolder/ [NC]
RewriteRule ^folder/subfolder/$ /subfolder/ [L,R]

以上内容将http://example.com/folder/subfolder/重定向到http://example.com/subfolder。 如果/subfolder/在根目录中不存在,则会出现404错误。为避免404错误,您可以使用内部/subfolder//folder/subfolder/ uri改写回其原始位置Rewrite,只需将第一个 :

RewriteRule ^subfolder/?$ /folder/subfolder/ [L]