Подтвердить что ты не робот

Laravel и Wordpress на том же сервере/домене

Я пытаюсь разместить сайт WordPress внутри проекта Laravel (5.1). У меня есть следующая структура (урезанная часть)

├── app
├── config
├── public
│   ├── index.php
│   ├── wordpress -> ../wordpress
│   └── .htaccess
├── resources
├── storage
├── vendor
└── wordpress
    ├── index.php
    ├── wp-admin
    ├── wp-config.php
    ├── wp-includes
    └── .htaccess

Приветствующий корень документа является общедоступным.

Wordpress должен поймать все, что попадает через .htaccess. Но, например, /login должен идти в laravel. Когда мой проект растет, я намереваюсь добавить больше правил, чтобы ловить запросы для Laravel. У меня есть следующий файл .htaccess в /public:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule "^/login" "index.php" [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule "^(.*)$" "wordpress/$1" [L]
</IfModule>

Но когда я делаю запрос/логин, я все равно заканчиваю страницу wordpress. Вот часть журнала:

 add path info postfix: /var/www/public/login -> /var/www/public/login/
 strip per-dir prefix: /var/www/public/login/ -> login/
 applying pattern '^/login' to uri 'login/'
 add path info postfix: /var/www/public/login -> /var/www/public/login/
 strip per-dir prefix: /var/www/public/login/ -> login/
 applying pattern '^(.*)$' to uri 'login/'
 RewriteCond: input='/var/www/public/login' pattern='!-d' => matched
 RewriteCond: input='/var/www/public/login' pattern='!-f' => matched
 rewrite 'login/' -> 'wordpress/login/'
 add per-dir prefix: wordpress/login/ -> /var/www/public/wordpress/login/
 strip document_root prefix: /var/www/public/wordpress/login/ -> /wordpress/login/
 internal redirect with /wordpress/login/ [INTERNAL REDIRECT]

Кажется, что переписывание не останавливается на значке [L].

4b9b3361

Ответ 2

Как указано в комментарии, вот ответ:

Как вы можете видеть в ваших журналах, первое условие не соответствовало:

applying pattern '^/login' to uri 'login/'

login/ не начинается с /

Итак, вам нужно изменить свое правило на

RewriteRule "^login/" "index.php" [L]

Ответ 3

Можно добавить условие перезаписи к файлу Laravel .htaccess по умолчанию, который позволит игнорировать все запросы в подкаталог (/wordpress) Laravel.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Ignore Wordpress directory
    RewriteCond $1 !^(wordpress)

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>