Как получить / folder / subfolder для отображения как / subfolder / используя htaccess - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь сделать следующее ...

Исходный путь, который необходимо переписать, переименовать или перенаправить:

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

до

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

через корневой файл htaccess ... Любая помощь будет принята с благодарностью!

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

Это не работает:

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

Это тоже не работает:

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

Это тоже не работает:

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

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

EDIT

С помощью @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 голосов
/ 05 июля 2018

Ни одно из правил, которые вы пробовали, не является правильным. Для перенаправления с /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. Вы получите ошибку 404, если /subfolder/ не существует в корневом каталоге. Чтобы избежать ошибки 404, вы можете переписать /subfolder/ uri обратно в исходное местоположение /folder/subfolder/, используя внутренний Rewrite, только ниже первого :

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