Порядок выполнения .htaccess в подкаталогах (wordpress/laravel)

Доброе утро Стек! Мой сайт в настоящее время структурирован следующим образом:

  1. http://www.mywordpressite.com/
  2. http://www.mywordpressite.com/.htaccess
  3. http://www.mywordpressite.com/portal/
  4. http://www.mywordpressite.com/portal/.htaccess

Я понимаю вселенную так, что если я перейду на портал, (4) .htaccess будет проанализирован вместо (или с предпочтением) (2) .htaccess. На самом деле я наблюдаю это даже при переходе к (3) http://www.mywordpressite.com/portal/, .htaccess из (2) вступает во владение.

Как вы понимаете, корневой каталог — это сайт wordpress со стандартным файлом wordpress .htaccess:

/.htaccess

<files wp-config.php>
Order deny,allow
deny from all
</files>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Портал представляет собой портал Laravel со стандартным файлом Laravel .htaccess.

/портал/.htaccess

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Что я заметил, так это то, что если я удалю (2) /.htaccess, внезапно все заработает с порталом, поэтому, безусловно, произойдет столкновение. Я не буду публиковать здесь свой vhost, так как оба .htaccess работают/делают то, что должны делать, просто не одновременно:

/.htaccess в значительной степени перенаправляет все входные данные, где входные данные не соответствуют файлу или каталогу, в файл index.php для лучшего анализа.

/portal/.htaccess делает что-то подобное.

Что я заметил, так это то, что с обоими .htaccess, если я перехожу к маршруту, который обычно анализируется .htaccess портала, например http://www.mywordpressite.com/portal/this/is/a/route В итоге я получаю 404 от моего wordpress site (например, он передал URL-адрес в файл /index.php корневого каталога WordPress), и, конечно же, эта страница не существует в WP.

Когда я удаляю файл wp /.htaccess, конечно, wordpress больше не работает, но вдруг портальный файл .htaccess начинает работать нормально и http://www.mywordpressite.com/portal/this/is/a/route запускает соответствующий маршрут, передавая параметры URL в /portal/ index.php для обработки.

Мне это кажется обратным. Какие-либо предложения?


person Authman Apatira    schedule 16.02.2013    source источник
comment
Пробовали ли вы исключить /portal из набора правил WP, например: RewriteCond %{REQUEST_URI} !/portal [NC] ниже RewriteRule ^index\.php$ - [L], и добавить /portal в набор правил портала, например: RewriteCond %{REQUEST_URI} ^/portal [NC]? Вы все равно должны добавить RewriteBase /portal в набор правил портала, как говорит MikeAnthony.   -  person Felipe Alameda A    schedule 17.02.2013


Ответы (1)


Я думаю, что ваша проблема заключается в том, что вы пропустили RewriteBase в файле доступа к порталам:

RewriteBase /portal/

Я не гений доступа к гипертексту, поэтому я не могу объяснить, что происходит, когда вы его опускаете. Но я уверен, что это решение.

person Mike Rockétt    schedule 16.02.2013